2013-04-25 2 views
0

Что делать, если в следующий бит кода, который я собираюсь заменить (new FileWriter с (new PrintWriterPrintWriter против FileWriter в следующем контексте

pw = new PrintWriter(new BufferedWriter(new FileWriter ("xanaduindeed.txt"))); 

pw = new PrintWriter(new BufferedWriter(new PrintWriter ("xanaduindeed.txt"))); 

Оба они работают хорошо, однако я хотел бы знать, какой из двух оптимизируют использование памяти. (если один из двух на самом деле лучше) Заранее спасибо.

+1

Не 'pw = новый PrintWriter (новый BufferedWriter (новый файл PrintWriter (" xanaduindeed.txt ")));' тот же, что и 'pw = new PrintWriter (" xanaduindeed.txt ");'? – Dukeling

ответ

1

Главное, о чем бы я беспокоился, это обработка исключений для обоих случаев. Проверьте этот более старый ответ here

В любом случае, будьте осторожны с кодировкой! Вы принимаете по умолчанию YOUT системы, так что вы пишете на вашем компьютере может быть неверно истолкован в другом

3

В JVM Оракула:

public PrintWriter(String fileName) throws FileNotFoundException { 
    this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName))), 
     false); 
} 

PrintWriter «s примечателен характеристикой является промывать выход на каждой новой строки (LF или CR или CRLF). Наименьшая занимаемая память будет пустой FileWriter, но буферизация дает заметное улучшение производительности ввода-вывода.

0

Лучшее решение

new PrintWriter ("xanaduindeed.txt"))); 

использует BufferedWriter внутренне и записывает текст в символьном поток вывода, буферизация символов таким образом, чтобы обеспечить эффективное написание отдельных символов, массивов и строк. Вам не нужно пытаться оптимизировать его дальше.