#java #eclipse
#java #eclipse
Вопрос:
try{
private fileWriter= new PrintWriter(new FileWriter(file.txt));
fileWriter.print("hello world");
System.out.println("file written");
fileWriter.close();
}
catch (IOException e){
e.printStackTrace();
} finally {
}
У меня есть этот текстовый файл в моей исходной папке. До сих пор не было никаких ошибок при доступе к нему. Однако, когда я закрываю программу или после того, как файлы должны были быть записаны, когда я открываю текстовый файл, я их там не нахожу, однако я проверил папку bin ocne и, похоже, напечатал hello world для временной копии там.
Я хочу, чтобы изменения, которые он вносит, были постоянными.
Ответ №1:
У вас есть пара проблем в вашем коде. Исправление / упрощение до следующего:
public static void main(String[] args) throws IOException {
PrintWriter fileWriter = new PrintWriter(new FileWriter(new File("file.txt")));
fileWriter.print("hello world");
System.out.println("file written");
fileWriter.close();
}
позволяет создать файл, как ожидалось. Попробуйте это, и если он ведет себя не так, как вы ожидаете, тогда объясните, как это сделать. Обратите внимание, что когда вы указываете относительный путь к файлу, он преобразует путь в ваш текущий рабочий каталог. Вероятно, именно поэтому, если файл записывается куда-то, чего вы не ожидаете.
Ответ №2:
Файл в папке bin не является временным файлом, это файл, который вы на самом деле пишете. Если вы хотите выполнить запись в файл в исходной папке, вы должны использовать правильный путь к файлу при открытии файла для записи. Java всегда вычисляет относительные пути к папке, в которой вы запустили свое приложение. Таким образом, ваше приложение, вероятно, запускается в папке bin и записывает в file.txt там.
Ответ №3:
Возможно, попробуйте использовать логическое значение append в конструкторе FileWriter
public FileWriter(строковое имя файла, логическое добавление)
… и я думаю, что eclipse будет использовать папку bin в качестве пути к классу по умолчанию, поэтому неудивительно, что файл записан там.
Я надеюсь, что это поможет 🙂
Комментарии:
1. к сожалению, использование append ничего не изменило, приняв его как true или false
2. Я собирался сказать, попробуйте: FileWriter. flush(); Для меня это работает нормально, но я использую BufferedWritter, я собираюсь проверить, почему они будут такими разными, если они есть… BufferedWriter out = новый BufferedWriter(новый FileWriter(«file.txt «, верно)); выход. write(«Привет, мир»); out.close();
3. да, у меня получилось, кажется, что вывод записывался только в bin, поэтому, если я зашел в проект, щелкнул правой кнопкой мыши -> настройка сборки, была возможность разрешить выходные папки для исходных папок, тогда все, что мне нужно было сделать, это изменить вывод на bin, и он начал работать
4. подумать только, все это время это был просто флажок, который нужно было установить
Ответ №4:
Поскольку код был в порядке, перейдите в обозреватель пакетов -> проект -> свойства -> путь сборки java -> источник -> установите флажок с надписью «разрешить вывод для исходных папок»