Как вывести список всех файлов в папке, которые заканчиваются на «.dat» с последними изменениями (datetime) - PullRequest
0 голосов
/ 21 января 2020
private static void listofRecentFile() {

        try (Stream<Path> walk = Files.walk(Paths.get("C:\\DEV\\PrismaGateway\\Service\\"))) {

            List<Path> result = walk.filter(f -> f.toString().endsWith(".dat")).filter(Files::getLastModifiedTime).collect(Collectors.toList());

            result.forEach(System.out::println);



        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Чего я хочу добиться - я хочу перечислить все файлы .dat, которые только что изменились, или последние изменения, если в папке есть 10 файлов, но только 3, которые я изменяю, это означает, что это покажет, что 3 файла только.

пример:

|folder_a|   date   |<br>
|  a.dat |22/01/2020|<br>
|  b.dat |20/01/2020|<br>
|  c.dat |20/01/2020|<br>
|  d.dat |22/01/2020|<br>
|  e.dat |13/01/2020|<br>
|  f.txt |22/01/2020|<br>

программа найдет .dat файл с недавним изменением даты 22 января 2020 года, как показано ниже:

a.dat 22/01/2020 <br>
d.dat 22/01/2020

до сих пор я просто мог перечислить файл .dat, но все еще выяснил, как показать дату / последние изменения. может кто-нибудь мне помочь: ")

Ответы [ 2 ]

1 голос
/ 21 января 2020

Чтобы получить такие вещи, как последний доступ и время последнего изменения, вам нужно загрузить атрибуты файлов, вы можете использовать это:

BasicFileAttributes attr = Files.readAttributes(f.toPath(), BasicFileAttributes.class);

out += "Creation Time      : " + attrs.creationTime() + "\n";
out += "Last Access Time   : " + attrs.lastAccessTime() + "\n";
out += "Last Modified Time : " + attrs.lastModifiedTime() + "\n";
out += "Is Directory       : " + attrs.isDirectory() + "\n";
out += "Is Other           : " + attrs.isOther() + "\n";
out += "Is Regular File    : " + attrs.isRegularFile() + "\n";
out += "Is Symbolic Link   : " + attrs.isSymbolicLink() + "\n";
out += "Size               : " + attrs.size() + "\n";

System.out.print(out);
0 голосов
/ 14 февраля 2020
List<Object> result = walk.filter(f -> f.toString().endsWith(".dat")).collect(Collectors.toList());
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            for (int i = 0; i < result.size(); i++) {
                File file = new File(result.get(i).toString());
                for (Date date = day; !date.after(localDate); date = DateUtils.addDays(date, 1)) {
                    if (sdf.format(file.lastModified()).equals(sdf.format(date))) {
                        temp.append(file.getAbsolutePath() + ";");
                        totalDat++;
                    }
                }
            }

это может быть лучше, просто сравните его и используйте в нем компоновщик временных строк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...