如何在Java中的目录中找到最后修改的文件?

jum*_*mar 23 java file-io last-modified

如何在java中的目录中找到最后修改的文件?

Boz*_*zho 45

private File getLatestFilefromDir(String dirPath){
    File dir = new File(dirPath);
    File[] files = dir.listFiles();
    if (files == null || files.length == 0) {
        return null;
    }

    File lastModifiedFile = files[0];
    for (int i = 1; i < files.length; i++) {
       if (lastModifiedFile.lastModified() < files[i].lastModified()) {
           lastModifiedFile = files[i];
       }
    }
    return lastModifiedFile;
}
Run Code Online (Sandbox Code Playgroud)

  • 使用比较器是一种很好的做法,但这只是一个简单的任务,可能没有它. (4认同)
  • 如果目录为空,您可以获得超出范围的索引.您不应将文件[0]分配给循环外的lastModifiedFile. (2认同)

mat*_*t b 8

结合这两个:

  1. 您可以使用文件的最后修改时间File.lastModified().
  2. 要列出目录中的所有文件,请使用File.listFiles().

请注意,在Java中,java.io.File对象用于目录和文件.


Joh*_*ire 6

import org.apache.commons.io.comparator.LastModifiedFileComparator;
import org.apache.commons.io.filefilter.WildcardFileFilter;

...
...

/* Get the newest file for a specific extension */
public File getTheNewestFile(String filePath, String ext) {
    File theNewestFile = null;
    File dir = new File(filePath);
    FileFilter fileFilter = new WildcardFileFilter("*." + ext);
    File[] files = dir.listFiles(fileFilter);

    if (files.length > 0) {
        /** The newest file comes first **/
        Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
        theNewestFile = files[0]
    }

    return theNewestFile;
}
Run Code Online (Sandbox Code Playgroud)

这对我很有用