ИМХО принятый ответ не учитывает тот факт, что целью является написание символов.(Я знаю, что тема старая, но, так как во время поиска этой же темы я наткнулся на этот пост, прежде чем найти рекомендуемое решение, я публикую здесь.)
Из FileOutputStream
документов , вы используете FileOutputStream
, когда хотите печатать байты.
FileOutputStream предназначен для записи потоков необработанных байтов, таких как данные изображения.Для записи потоков символов рассмотрите возможность использования FileWriter.
Кроме того, из BufferedWriter
документов :
Если не требуется быстрый вывод, онжелательно обернуть BufferedWriter вокруг любого Writer, чьи операции write () могут быть дорогостоящими, например FileWriters и OutputStreamWriters.
Наконец, ответ будет следующим (как упоминалось в этом другомStackOverFlow post ):
PrintWriter out = null;
try {
out = new PrintWriter(new BufferedWriter(new FileWriter("writePath", true)));
out.println("the text");
}catch (IOException e) {
System.err.println(e);
}finally{
if(out != null){
out.close();
}
}
Также, начиная с Java 7, вы можете использовать оператор try-with-resources.Блок finally не требуется для закрытия объявленных ресурсов, поскольку он обрабатывается автоматически и также менее подробен:
try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("writePath", true)))) {
out.println("the text");
}catch (IOException e) {
System.err.println(e);
}