Я просто пытаюсь добавить новую строку текста в свой файл *.txt, но ничего не происходит. Файл упакован с расширением .war, поэтому я использую ClassLoader для доступа к файлу. Кроме того, и моя IDE eclipse, и содержимое файла используют кодировку UTF-8.
Я использовал их для вдохновения:
Как добавить новую строку текста в существующий файл на Java?
объект Java BufferedWriter с utf-8
Теперь мой код в основном основан на последнем сообщении и выглядит так:
public class test {
public static void main(String[] args){
URL url = Thread.currentThread().getContextClassLoader().getResource("MilestoneExport.txt");
File file = new File(url.getFile());
System.out.println(file.canRead()); //true
System.out.println(file.canWrite()); //true
try {
BufferedWriter out = new BufferedWriter
(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
out.append("new line");
out.append("new line 2");
out.append("new line 3");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Я подтвердил, что файл действительно найден, и он нормально читается. Я смог вывести все его содержимое на консоль с помощью файла BufferedReader
. Путь к файлу тоже правильный, но в файл абсолютно не добавляется текст. Я убедился, что обновлял и обновлял каждый раз, когда запускаю программу.
Кроме того, я попытался создать простой пустой файл с именем foo.txt
, который находится в том же каталоге, что и test.java. Я добавил следующий код в основной метод, предоставленный BufferedWriter
API, по адресу http://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html
PrintWriter out2 = new PrintWriter(
new BufferedWriter(new FileWriter("foo.txt")));
out2.println("new Line");
out2.close();
Что мне здесь не хватает? Почему нет сообщений об ошибках, а также ответов или отзывов?
ВСЕ НИЖЕ ЯВЛЯЕТСЯ ТОЛЬКО ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИЕЙ О ТО, ЧТО Я ПРОБОВАЛА. НЕТ ОТЗЫВОВ НИ В КОЕМ СЛУЧАЕ:
- Не этот: Почему BufferedWriter не записывает в файл?
- Не этот: почему bufferedwriter не записывает в файл ?
- Не этот: Невозможно записать в файл с помощью BufferedWriter
- Еще одно «не забудьте закрыть/сбросить»: Java: проблемы с доступом и запись в файл
- Определение BufferedWriter вне блока
try
не имеет значения, но я все равно попробовал это из-за Как записать детали в файл с помощью BufferedWriter и FileWriter в Java?
Кроме того, этот код из этого ответа тоже ничего не делает...
try {
BufferedWriter output = new BufferedWriter(new FileWriter(new File("house.txt")));
output.write("text");
output.close();
}
catch (IOException e) {
e.printStackTrace();
}
последнее, но не менее важное: я подозревал, что это может быть как-то связано с упаковкой моего веб-приложения и различиями между исходной и целевой папками. Поэтому я скопировал код в новый чистый проект, но он по-прежнему ничего не делает...
ИЗМЕНИТЬ:
этот код:
System.out.println(file.exists());
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());
System.out.println(file.getName());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.setLastModified(new GregorianCalendar().getTimeInMillis()));
выдает следующие результаты:
- истинный
- D:\Data\myworkspace\MyProject\target\classes\MilestoneExport.txt
- D:\Data\myworkspace\MyProject\target\classes\MilestoneExport.txt
- MilestoneExport.txt
- ложный
- истинный
- истинный
Я совершенно неправильно понимаю использование файловых объектов java и их использование с FileWriters? Файл явно 100% подтвердил правильный файл.