我有关于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获得的,但每次运行程序时都需要覆盖
这是我删除FileWriter以覆盖
时得到的
感谢。
答案 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;
}
}