读取路径中的所有文件并检查它们

时间:2016-04-10 14:12:52

标签: java filereader

我正在阅读代码中提到的路径中的所有文件

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class folderReader {

        public static void main(String[] args) {


            //Extension > .wav files
            File folderWav = new File(
                    "/home/bassem/Desktop/LatestData3/Nemlar_RMC/nemlar_RMC");
            File[] listOfWavs = folderWav.listFiles();


            //Extension > .insent
            File folderInsent = new File(
                    "/home/bassem/Desktop/LatestData3/outputInsent");
            File[] listOfInsents = folderInsent.listFiles();


            //Extension > .ctl
            File folderCtl = new File("/home/bassem/Desktop/LatestData3/outputCtl");
            File[] listOfCtls = folderCtl.listFiles();



            for (File file : listOfWavs) {
                for (File file2 : listOfInsents) {
                    for (File file3 : listOfCtls) {
                        if (file.isFile() && file2.isFile() && file3.isFile()) {

                            if ((file.getName().substring(0,
                                    file.getName().length() - 4).equals(file3
                                    .getName().substring(0,
                                            file3.getName().length() - 4)))) {
                                if ((file2.getName().substring(0,
                                        file2.getName().length() - 7).equals(file3
                                        .getName().substring(0,
                                                file3.getName().length() - 4)))) {
                                    System.out.println(file3.getAbsolutePath());
                                }

                            }
                        }

                    }
                }
            }

        }
    }

阅读所有文件后,我正在检查他们的名字,使用子字符串删除(.ctl - .insent - .wav),如果他们相等,我应该做一些东西我在这里尝试打印路径检查是否代码工作,它什么都不打印

我尝试使用它,但它打印得很好。

    for (File file : listOfWavs) {
    for (File file2 : listOfInsents) {
        if (file.isFile() && file2.isFile()) {
            if ((file.getName().substring(0,
                    file.getName().length() - 4).equals(file2.getName()
                    .substring(0, file2.getName().length() - 7)))) {

                System.out.println(file2.getAbsolutePath());
            }
        }
    }
}

问题只发生在我在运行代码时一起检查3个文件夹时,它只是一个空的控制台!

1 个答案:

答案 0 :(得分:0)

String folder = "/home/bassem/Desktop/LatestData3/";

List<String> insents = readFolderBasenames(folder + "outputInsent", "insent");
List<String> wavs = readFolderBasenames(folder + "Nemlar_RMC/nemlar_RMC", "wav");
List<String> ctls = readFolderBasenames(folder + "outputCtl", "ctl");

insents.retainAll(wavs);
insents.retainAll(ctls);

for(String file : insents) {
    System.out.println(folder + file + ".insent");
}


private List<String> readFolderBasenames(String path, String extension) {
    File[] arr = new File(path).listFiles());
    for(int i=0; i<arr.length; i++) {
        arr[i] = arr[i].getName().substring(0, arr[i].getName().length() - extension.length() - 1);
    }
    return Arrays.asList(arr);
}