2015-04-13 1 views
0

У меня проблема с классом PrintWriter. Я пытаюсь написать длинный текст в файле. Сначала у меня была проблема перезаписи. Каждый раз, когда я запускаю его, там видно только последнее слово. Затем я добавил FileWriter, но на этот раз он не перезаписывает файл всякий раз, когда я запускаю его снова.PrintWriter перезаписывает каждое слово или не перезаписывает весь файл

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

Спасибо.

+0

Измените второй аргумент на конструктор FileWriter на false (он добавляется). –

+0

Hi Elliot. Спасибо за ответ. На этот раз он пишет только последнее слово. Как и фотография ниже. Мне нужно записать в файл, как если бы он записывался на консоль с использованием метода System.out.print(). –

+0

Итак, в чем проблема? Что вы хотите сделать? – RealSkeptic

ответ

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; 
    } 
} 
+0

Спасибо за ответ.На самом деле это назначение, и есть такие требования, как отсутствие пробела после последнего слова каждой строки. Итак, я добавил пробелы перед каждым словом, и для первого слова нет места раньше. Кроме того, использование этого не меняет проблему перезаписи. Я думаю, что это трудно объяснить. Мне нужно перезаписать этот файл каждый раз, когда я запускаю программу. Но я не могу. Если я изменил второй аргумент на конструктор FileWriter на false, тогда он будет писать только последнее слово из всех. –

+0

@ OğuzK См. Править. – EJP

+0

Спасибо. Я написал этот код, но сначала я изменил, если в качестве счетчика! = 0. –

0

я, наконец, понял, как решить эту проблему. Я удаляю файл каждый раз, когда запускаю программу. И я использую эту строку, как показано выше.

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

В случае, если я не удаляю файл, программа не перезаписывает файл. Вместо этого он начинает писать новый текст в конце написанного файла.

 Смежные вопросы

  • Нет связанных вопросов^_^