Проблема с поиском в каталоге по шаблону - PullRequest
0 голосов
/ 12 сентября 2018

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

Предполагается, что метод определяет, может ли файл с именем FAACIFP_(year)(cycle).DAT быть найден в текущем каталоге.

Я пытался запустить PathMaker.matches("glob:FAACIFP_18") с IF / ELSE, и когда я тестировал его, он всегда оценивал TRUE.Итак, я попробовал лямбда-функцию, и она не найдет файл.

Разве лямбда, указанная ниже, не должна печатать имя файла или я неправильно понимаю / неправильно его использую?

static void getCnvrtdCifpName() throws IOException{
        String cnvFileName = "FAACIFP_"+Year.now()
                .format(DateTimeFormatter.ofPattern("yy"));
        Path cnvFilePath = Paths.get(System.getProperty("user.dir"));
        Files.find(cnvFilePath,0,(path,attr) -> 
                path.getFileName().startsWith(cnvFileName)).forEach(System.out::println);
        System.out.println("EVALUATING METHOD....\t SEARCH PATH: "+cnvFilePath
                +" \n\t\t\t FILE STRING: "+cnvFileName);
    }

Вывод:

run:
Located RAW CIFP file FAACIFP18

EVALUATING METHOD....    SEARCH PATH: C:\Users\u314170\Documents\Personal\Java\NetBeans\A424Parser 
             FILE STRING: FAACIFP_18
BUILD SUCCESSFUL (total time: 0 seconds)

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

После предложений я наконец-то нашел решение:

static void getCnvrtdCifpName() throws IOException{
        String cnvFileName = "FAACIFP_"+Year.now()
                .format(DateTimeFormatter.ofPattern("yy"));
        Path cnvFilePath = Paths.get(System.getProperty("user.dir"));
        DirectoryStream<Path> cnvFileStream = Files.newDirectoryStream(cnvFilePath,cnvFileName+"*");
        System.out.println("EVALUATING METHOD....\t SEARCH PATH: "+cnvFilePath
                +" \n\t\t\t FILE STRING: "+cnvFileName);
        List cnvDirList = new ArrayList();
        for(Path file: cnvFileStream){
            cnvDirList.add(file.getFileName().toString());
        }
        cnvFileStream.close();
        System.out.println(cnvDirList);
    }

С выводом:

run:
EVALUATING METHOD....    SEARCH PATH: C:\Users\u314170\Documents\Personal\Java\NetBeans\A424Parser 
             FILE STRING: FAACIFP_18
[FAACIFP_1808.dat, FAACIFP_1810.txt, FAACIFP_1811.txt]
BUILD SUCCESSFUL (total time: 0 seconds)

Мне очень нравятся проблемы с решением проблем при изучении Java.Существует так много ресурсов и много разных способов решить проблему.

0 голосов
/ 12 сентября 2018

Две проблемы: 1) измените maxdepth в вашем вызове find на 1 (с нуля) 2) path.getFileName () возвращает полное имя пути. Вы захотите оценить только часть имени файла (посмотрите на getName (getNameCount () - 1)

...