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

时间:2018-04-25 07:18:33

标签: java csv google-cloud-platform google-cloud-storage apache-beam

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

enter image description here

方案:有许多用户首先将Test_1.csvTest_2.csv文件放在他们想要的任何文件夹中(旧文件将被替换)然后执行该程序 。关注的是当user1将最新的Test_1.csvTest_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 个答案:

答案 0 :(得分:0)

我不是百分百肯定,但看起来您正在寻找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;
        }
    }
}