代码之家  ›  专栏  ›  技术社区  ›  Nagesh Singh Chauhan

遍历所有文件夹以搜索最新修改的文件

  •  0
  • Nagesh Singh Chauhan  · 技术社区  · 6 年前

    如果你查看下面的图片,我有一个包含3个文件夹的google bucket,每个文件夹都包含相同的文件 Test_1.csv Test_2.csv 。这两个文件将作为我的数据流管道中的输入。

    enter image description here

    情况是 :有许多用户会首先将 测试1。csv 测试2。csv 在任何他们想要的文件夹中的文件(旧文件将被替换),然后执行程序。问题是user1何时将最新的 测试1。csv 测试2。csv 在任何文件夹中,程序应检查所有文件夹,并仅获取最后修改的文件。同样,当user2放入最新的文件并执行程序时,程序应该检查所有文件夹,只提取最后修改的文件。

    我可以使用以下代码检查文件夹中最后修改的文件:

    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; }
    

    如何在所有文件夹中循环搜索最新修改的文件?

    1 回复  |  直到 6 年前
        1
  •  0
  •   achAmháin    6 年前

    我不是百分之百确定,但看起来你想找到两者 Test_1.csv Test_2.csv ?

    传入根文件夹,并递归遍历文件夹以查找两个文件:

    public static File Test1;
    public static File Test2;
    
    public static void main(String[] args) {
        File file = new File("\\\\your\\file\\path");
        searchFiles(file);
        System.out.println(Test1);
        System.out.println(Test2);
    }
    
    public static void searchFiles(File directory) {
        if (directory.isDirectory()) {
            File[] subDirectories = directory.listFiles();
            for (File file : subDirectories) {
                searchFiles(file);
            }
        } else {
            if (Test1 == null) {
                if (directory.getName().contains("Test_1")) {
                    Test1 = directory;
                }
            }
            if (Test2 == null) {
                if (directory.getName().contains("Test_2")) {
                    Test2 = directory;
                }
            }
            if (directory.getName().contains("Test_1") && directory.lastModified() > Test1.lastModified()) {
                Test1 = directory;
            }
            if (directory.getName().contains("Test_2") && directory.lastModified() > Test2.lastModified()) {
                Test2 = directory;
            }
        }
    }