Прокрутите все папки, чтобы найти последний измененный файл - PullRequest
0 голосов
/ 25 апреля 2018

Если вы проверите изображение ниже, у меня есть ведро Google, содержащее 3 папки, и каждая папка содержит одинаковые файлы Test_1.csv и Test_2.csv. Эти 2 файла будут приняты как входные данные в моем потоке данных.

enter image description here

Сценарий : Многие пользователи сначала помещают файлы Test_1.csv и Test_2.csv в любую папку, которую они хотят (старые файлы будут заменены), а затем запускают программу. Проблема заключается в том, что когда user1 помещает последние Test_1.csv и Test_2.csv в любую папку, тогда программа должна проверить все папки и извлечь только последние измененные файлы. Аналогично, когда пользователь2 помещает последние файлы и выполняет программу, программа должна проверить все папки и извлечь только последние измененные файлы.

Я могу проверить последний измененный файл в папке с кодом ниже:

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 голосов
/ 25 апреля 2018

Я не уверен на 100%, но, похоже, вы ищете, как 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...