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

时间:2015-07-29 10:11:57

标签: java bufferedreader

受尊敬的会员,

此主题已在前面讨论过,但我已尝试过这些。我在从一个文件夹中读取所有文本文件时遇到问题。我正在计算每个文本文件的概率。每个文本文件都有大约1500行。我显示的代码是从文件夹中读取文件,但它没有执行它的方法。我在代码块中使用了两个循环。我尝试在两个循环中使用“i”变量中的值运行执行。在FOR循环之前执行while循环(显示错误的逻辑)。我希望它为每个文本文件执行“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) {}
}

2 个答案:

答案 0 :(得分:0)

我认为您的问题可能是由于try块的执行,即使f可能是目录。如果continue不是文件,您可以使用f(请参阅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) {}
}

答案 1 :(得分:0)

用于阅读文件只需使用:

import org.testng.reporters.Files;

String data = Files.readFile(file);

代码更干净,你可以做任何你想做的事情