有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

bufferedreader读取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) {}
}

共 (2) 个答案

  1. # 1 楼答案

    要读取文件,请使用:

    导入组织。testng。记者。档案

    字符串数据=文件。读取文件(文件)

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

  2. # 2 楼答案

    我认为您的问题可能是由于执行了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) {}
    }