2013-03-09 1 views
2

Эта программа запрашивает имя выходного файла и, кажется, работает хорошо. Пока я не попытаюсь открыть выходной файл с помощью текстового редактора или терминала. Тогда я ничего не вижу в этом файле только пустым файлом. Эта программа создает текстовый файл, но файл пуст. Спасибо за вашу помощь заранее.PrintWriter не печатает тексты в файл .txt

import java.util.*; 
import java.io.IOException; 
import java.io.PrintWriter; 
/** 
* Writes a Memo file. 
* 
*/ 
public class MemoPadCreator { 
    public static void main(String args[]) { 
    Scanner console = new Scanner(System.in); 
    System.out.print("Enter Output file name: "); 
    String filename = console.nextLine(); 
    try { 
    PrintWriter out = new PrintWriter(filename); 

    boolean done = false; 
    while (!done) { 
     System.out.println("Memo topic (enter -1 to end):"); 
     String topic = console.nextLine(); 
     // Once -1 is entered, memo's will no longer be created. 
     if (topic.equals("-1")) { 
     done = true; 
    console.close(); 
     } 
     else { 
     System.out.println("Memo text:"); 
     String message = console.nextLine(); 

     /* Create the new date object and obtain a dateStamp */ 
     Date now = new Date(); 
     String dateStamp = now.toString(); 

     out.println(topic + "\n" + dateStamp + "\n" + message); 
     } 
    } 
    /* Close the output file */ 

    } catch (IOException exception) { 
    System.out.println("Error processing the file:" + exception); 
    }console.close(); 
    } 
} 

ответ

5

Используйте out.flush() для промывки содержимого в файл.

Или использовать авто-флеш конструктор PrintWriter (не может быть лучшее выполнение варианта), но в любом случае вариант

public PrintWriter(Writer out,boolean autoFlush) 

AutoFlush - Логический; если true, то println, методы printf, или формат смоет выходной буфер

+1

Это действительно плохая идея для исполнения. –

+0

@MirkoAdari yes true, но текущая программа, похоже, не требует производительности. Вот почему я предложил это. В любом случае действительный пункт будет включать его в сообщение. –

+0

Это сработало спасибо – 2013-03-14 21:01:36

1

Вам нужно промыть PrintWriter для содержимого, которое должно быть записано в файл из буфера памяти.

out.flush(); 

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

2

Вы не закрывать свой PrintWriter объект. Вам нужно, чтобы закрыть поток, чтобы отразить его на консоли или файл (в зависимости от вашего OutputStream)

out.close(); 

Даже если у вас есть

PrintWriter out = new PrintWriter(System.out); 
... 
... 
... 
out.close(); 

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

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

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