Вы закрываете поток , но не писатель .Все данные хранятся в буфере записи.Используйте это вместо:
Writer writer = null;
try{
String xyz= "You should stop using xyz";
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("aq.txt")));
writer.write(xyz);
writer.flush();
}
catch(IOException e) {
System.out.println("Couldn't write to the file: " + e.toString());
}
finally{
if(writer != null){
try {
writer.close();
}
catch(IOException e1) {
e1.printStackTrace();
}
}
}
(Закрытие писателя закроет базовый OutputStreamWriter
, который также закроет FileOutputStream
.)
Обратите внимание, что я переместил flush
вызов в блок try
- вы не хотите flush
в блоке finally
, так как если это не удастся (например, у вас недостаточно места на диске), вы не закроете поток.Обычно я все равно не выполняю явную очистку, оставляя для этого close
, но меня предупреждали, что есть некоторые ситуации, в которых некоторые реализации будут молча перехватывать исключения во время очистки: (*