Почему моя программа не может удалить файлы, которые она создает под Win7? - PullRequest
5 голосов
/ 25 сентября 2011

Я создал программу на Java в Eclipse. Я начал на Windows XP, но недавно обновил.

Как часть механизма сохранения, программа записывает настройки в файл settings_new.sav. Если все в порядке, он удаляет settings.sav и переименовывает новый, чтобы соответствовать старому имени. Хотя он работал под winXP (по крайней мере, я так думал, но сейчас не могу проверить), под win7 он не может удалить файл, даже если это была программа, которая его создала (хотя это другой экземпляр программы). ).

Файл подобран Eclipse и может быть удален оттуда довольно счастливо. Я могу удалить это вручную. Я администратор на своем компьютере. Эта папка находится внутри папки рабочей области и не находится в Program Files (хотя я понятия не имею, установят ли ее потенциальные пользователи). Программа может создавать и изменять файлы просто отлично. Это не исключение, которое, как я думал, было бы, если бы win7 блокировал его.

Есть идеи?

Ответы [ 2 ]

9 голосов
/ 25 сентября 2011

Это связано с механизмом блокировки файлов в java. Убедитесь, что вы закроете потоки буферизации, такие как BufferedReader, BufferedInputStream для этого файла, когда закончите.

0 голосов
/ 25 сентября 2011

Раньше у меня была эта проблема, когда вы закончили использовать свой файл, вы должны установить свой файл равным нулю.Поэтому, если вы сделаете что-то вроде:

public void createFile(String path)
{
    File file = new File(path);
    file.createNewFile();
    file = null
}

, вы должны будете установить для файла значение null, когда вы закончите использовать его, чтобы система перестала использовать этот файл.Вы должны сделать то же самое с FileReader и FileWriter.Вы должны установить свои читатели файла и свои файловые писатели к нулю для доступа к файлу снова.Попробуйте и дайте мне знать, как это происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...