从 java 中的一个文件夹中读取所有文本文件(数据集)

Reading all text files(data set) from one folder in java

尊敬的各位会员,

之前已经讨论过该主题,但我已经尝试过了。我在从一个文件夹中读取所有文本文件时遇到问题。我正在计算每个文本文件的概率。每个文本文件都有大约 1500 lines.The 个代码,我已经展示了从文件夹中读取文件但它不执行方法 it.I 在代码块中使用了两个循环。我试图 运行 在两个循环中使用 "i " 变量中的值执行。while 循环在 FOR 循环之前执行(显示错误的逻辑)。我希望它执行 "get.probability()" 方法每个文本文件。请查找问题。它只是 运行 命名为 "cs.txt" 的文件夹中的第一个文件,计算它的概率并检测它的语言

String target_dir = "./testdataset";
int i = 0;
BufferedReader inputStream = null;
File dir = new File(target_dir);
File[] files = dir.listFiles();

for (File f : files) {
    if(f.isFile()) {
        System.out.println("File name in directory is: " + f);  
        inputStream = new BufferedReader(new FileReader(f));
        //System.out.println("i in FOR loop" + " " + i);
    }
    String line;
    try {
        while((line = inputStream.readLine()) != null) {
            //System.out.println("i in while loop" + " " + i); just for checking
             detector.append(inputStream);  
        }
        //i++;
        String lang = detector.detect();
        ArrayList<Language> langlist = detector.getProbabilities();
        System.out.println("Language Detected for input file is" + " " + lang); 
        System.out.println("Probability of language is: " + " " + langlist); 
        inputStream.close();      
    }
    catch(Exception e) {}
}

我认为您的问题可能是由于 try 块的执行引起的,即使 f 可能是一个目录。如果 f 不是文件,您可以使用 continue(参见 this)关键字跳到循环的下一次迭代。

我对 detector 一无所知,但请确保在调用 inputStream.close() 后清除输入,否则您可能会将多个文件附加到单个检测器。

for (File f : files) {
    //This will skip the file if it is a directory
    if (!f.isFile())
        continue;

    System.out.println("File name in directory is: " + f);  
    inputStream = new BufferedReader(new FileReader(f));

    String line;
    try {
        while((line = inputStream.readLine()) != null) {
            //System.out.println("i in while loop" + " " + i); just for checking
             detector.append(inputStream);  
        }
        //i++;
        String lang = detector.detect();
        ArrayList<Language> langlist = detector.getProbabilities();
        System.out.println("Language Detected for input file is" + " " + lang); 
        System.out.println("Probability of language is: " + " " + langlist); 
        inputStream.close();      
    }
    catch(Exception e) {}
}

读取文件只需使用:

进口org.testng.reporters.Files;

字符串数据=Files.readFile(文件);

代码会更简洁,您可以随心所欲