如何在文本文件中打印输出

时间:2014-03-10 22:12:23

标签: java printwriter

我正在尝试从文件中读取文本,执行某些操作并将结果输出到不同的文件中但由于某种原因它只打印一行结果。

    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

2 个答案:

答案 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();