java实现根据文件最后的修改时间排序

在日常的工作中,经常遇到对文件的批量读取,如果批量文件的读取顺序对最后的结果又影响,就涉及到如何排列文件的读取顺序。

排序最好的数据结构就是TreeMap,key,value放进去之后,遍历直接得出排好顺序的结果,非常适合这类问题。
在文件的排列中,如何保证key不重复是一个难点,
Long tempLong = new Long(subFile[i].lastModified()); 
把tempLong当做key,这样可以避免这个问题,同时将它与文件的排列条件——修改时间当做value,这样就完成了TreeMap的构造。

将TreeMap的keySet放入Set,创建一个迭代器   
Iterator<Long> it = set.iterator();
  即可以开始输出排好序的文件。



package test2;

import java.io.File;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;


public class FileListSort {

  private static final long serialVersionUID = 7025768684443110109L;

      public static void main(String[] args) {
         new FileListSort().getFilePathName();
     }

  public String getFilePathName() {
               TreeMap<Long,File> tm = new TreeMap<Long,File>();
               //File file = new File("C:\\FTPLOG\\logfile\\2012-04-22\\CP");
               File file = new File("C:\\FTPLOG\\2012-04-23HH");
               File subFile[] = file.listFiles();
               int fileNum = subFile.length;

               for (int i = 0; i < fileNum; i++) {
                       Long tempLong = new Long(subFile[i].lastModified());
                       tm.put(tempLong, subFile[i]);
               }

   System.out.println("按时间从前到后排序--->");
   System.out.println("最早的一个文件的路径-->"+tm.get(tm.firstKey()).getPath()+tm.firstKey());
   System.out.println("最近的一个文件的路径-->"+tm.get(tm.lastKey()).getPath()+tm.lastKey());

   Set<Long> set = tm.keySet();
   Iterator<Long> it = set.iterator();
   while (it.hasNext()) {
     Object key = it.next();
     Object objValue = tm.get(key);
     File tempFile = (File) objValue;
     Date date=new Date((Long)key);
     System.out.println(tempFile.getPath() + "\t"+date);
   }
   return null;
  }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值