PrintWriter会覆盖每个单词或不会覆盖整个文件

时间:2015-04-13 04:21:52

标签: java printwriter

我有关于PrintWriter类的问题。我想在文件中写一个长文本。起初,我有覆盖问题。每次我运行它,就会看到最后一个字。然后,我添加了FileWriter,但是这次我再次运行它时不会覆盖该文件。

private static void storyTeller(String wordsToWrite) throws IOException {
    Scanner scan = new Scanner(wordsToWrite);
    PrintWriter out = new PrintWriter(new FileWriter(outFile, true));
    String temp;

    while (scan.hasNext()) {
        temp = scan.next();
            if (counter == 0) {
                out.print(temp);
                System.out.print(temp);
            }
            counter = counter + temp.length() + 1;
            if (counter > 80) {
                System.out.println();
                out.println();
                System.out.print(temp);
                out.print(temp);
                counter = temp.length() + 1;
            }
            else{
                System.out.print(" " + temp);
                out.print(" " + temp);
            }

    }
    scan.close();
    out.close();
}

如果我没有将FileWriter参数添加到PrintWriter,则在outFile中只有一个单词(最后一个单词)。如果我添加新的FileWriter(outFile,true)'和上面的代码一样,这次我再次运行程序时不会覆盖。

这是我用FileWriter获得的,但每次运行程序时都需要覆盖

This one is what I get with FileWriter, but I need to overwrite each time I run the program

这是我删除FileWriter以覆盖

时得到的

This is what I get when I delete FileWriter for overwriting

感谢。

2 个答案:

答案 0 :(得分:1)

我终于想出了如何解决这个问题。我每次启动程序时都会删除该文件。而且,我使用如上所示的这一行。

PrintWriter out = new PrintWriter(new FileWriter(outFile, true));'

如果我没有删除该文件,程序不会覆盖该文件。相反,它继续在书面文件的末尾写入新文本。

答案 1 :(得分:0)

你正在做这个真正的用餐。不要在内存中累积字符串,只要在得到它们时写下字词:

while (scan.hasNext()) {
    temp = scan.next();
    if (counter == 0) {
        out.print(" ");
        System.out.print(" ");
        counter++;
    }
    out.print(temp);
    System.out.print(temp);
    counter = counter + temp.length();
    if (counter > 80) {
        System.out.println();
        out.println();
        counter = 0;
    }
}
相关问题