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

本文介绍了一种利用Java中的TreeMap数据结构来批量读取并按文件修改时间排序的方法。通过将文件的最后修改时间作为键值,实现了文件路径的自动排序,便于按时间顺序处理大量文件。
在日常的工作中,经常遇到对文件的批量读取,如果批量文件的读取顺序对最后的结果又影响,就涉及到如何排列文件的读取顺序。

排序最好的数据结构就是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、付费专栏及课程。

余额充值