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



各位尊敬的成员,

这个话题以前已经讨论过了,但我已经尝试过了。我正面临着从一个文件夹中读取所有文本文件的问题。我正在计算每个文本文件的概率。每个文本文件大约有1500行。我所显示的代码是从文件夹中读取文件,但它不执行方法。我在代码块中使用了两个循环。我试图在两个循环中使用"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(参见此)关键字跳到循环的下一次迭代。

我对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;

String data =Files.readFile(file);

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

最新更新