Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему в Java не записываются данные в текстовый файл ?

Великий программист На Python Ученик (96), на голосовании 10 месяцев назад
import java.io .BufferedWriter;
import java.io .FileWriter;
import java.io .IOException;

public class ЗаписаторПопытка2 {
public static void main(String[] args) throws IOException {
BufferedWriter bufferedWriter = new BufferedWriter( new FileWriter("C:\\Users\\march\\IdeaProjects\\untitled\\src\\WorksWithFiles\\kogoto.txt"));
bufferedWriter.write("Hello world");
}
}

в файле kogoto.txt нет ничего
Голосование за лучший ответ
Sergio 2.1 Оракул (67287) 11 месяцев назад
В вашем коде отсутствует вызов метода close() для объекта BufferedWriter. Без вызова close() данные могут не быть записаны в файл, потому что они остаются в буфере и не сбрасываются в файловую систему. Кроме того, лучше использовать блок try-with-resources для автоматического закрытия ресурсов, чтобы избежать утечек ресурсов.

Вот как должен выглядеть ваш исправленный код:
 import java.io.BufferedWriter; 
import java.io.FileWriter;
import java.io.IOException;

public class ЗаписаторПопытка2 {
public static void main(String[] args) {
// Используйте try-with-resources для автоматического закрытия ресурсов
try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\Users\\march\\IdeaProjects\\untitled\\src\\WorksWithFiles\\kogoto.txt"))) {
bufferedWriter.write("Hello world");
// Не нужно вызывать close(), так как try-with-resources сделает это автоматически
} catch (IOException e) {
e.printStackTrace(); // Выведите информацию об исключении, если что-то пошло не так
}
}
}
Андрей Панарин Искусственный Интеллект (249285) 11 месяцев назад
Писалка BufferedWriter собирает текст в буфер на несколько килобайт и потом сливает его в файл одним куском, когда буфер заполнится или писалке явно скомандуют это сделать.

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

Также вы можете для работы с писалкой использовать блок try с ресурсами, как уже предложили в другом ответе.
Похожие вопросы