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) {}
}
# 1 楼答案
要读取文件,请使用:
导入组织。testng。记者。档案
字符串数据=文件。读取文件(文件)
代码将更干净,你可以做任何你想做的事
# 2 楼答案
我认为您的问题可能是由于执行了
try
块,即使f
可能是一个目录。如果f
不是文件,则可以使用continue
(请参见this)关键字跳到循环的下一次迭代我对
detector
一无所知,但请确保在调用inputStream.close()
后清除输入,否则可能会将多个文件附加到单个检测器