我正在尝试从文件中读取文本,执行某些操作并将结果输出到不同的文件中但由于某种原因它只打印一行结果。
Scanner file = new Scanner(new FileInputStream("/.../file.txt"));
PrintWriter p = new PrintWriter(new FileWriter("/.../output.txt"));
int count = 0;
while (file.hasNextLine())
{
String s = file.nextLine();
count++;
try
{
if(s.contains("#AVFC")){
p.printf("There are %d words on this line ", s.split("\\s").length-1);
p.println(count);
p.close();
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
file.close();
这是输出;
There are 4 words on this line 1
但输出应为:
There are 4 words on this line 1
There are 10 words on this line 13
There are 8 words on this line 16
答案 0 :(得分:0)
为什么要在p
循环中关闭while
?
Scanner file = new Scanner(new FileInputStream("/.../file.txt"));
PrintWriter p = new PrintWriter(new FileWriter("/.../output.txt"));
int count = 0;
while (file.hasNextLine())
{
String s = file.nextLine();
count++;
try
{
if(s.contains("#AVFC")){
p.printf("There are %d words on this line ", s.split("\\s").length-1);
p.println(count);
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
p.close();
file.close();
代码中的 PrintWriter
在文件中找到的第一个匹配项时关闭,其他匹配项不会写入输出文件,因为您之前关闭了文件编写器。
答案 1 :(得分:0)
请勿在循环内关闭PrintWriter
。 (你仍然需要它。)只需在循环后关闭它。
while(file.hasNextLine())
{
// your code goes here...
}
p.close();
file.close();