Мне известно, что этот вопрос является ярым дубликатом этого вопроса. Однако , я прочитал всю эту страницу дважды, а некоторые разделы - 3 раза, и я не вижу, как / где на нее отвечают!
Итак, к моей проблеме.
Я на работе и застрял на Java 6 SE и не могу перейти на 7. Я пишу программу, которая создает файл, записывает в него, выполняет некоторую обработку, а затем ему нужно удалить файл из существования. У меня точно такая же проблема, как и у человека, который задал вопрос, на который я ссылаюсь выше: Java не удалит файл, и я не могу понять, почему.
код:
File f = null;
FileWriter fw = null;
try
{
f = new File("myFile.txt");
fw = new FileWriter(f);
fw.write("This is a sentence that should appear in the file.");
fw.flush();
if(f.delete())
System.out.println("File was successfully deleted.");
else
System.err.println("File was not deleted.");
}
catch(Exception exc)
{
System.err.println(exc.getMessage());
}
catch(Error er {
System.err.println(er.getMessage());
}
catch(Throwable t)
{
System.err.println(t.getMessage());
}
finally
{
fw.close();
}
Это не выбрасывание бросаемых элементов, ошибок или исключений (я включил их, чтобы исключить любой и все крайние случаи). Второй оператор печати ("File was not deleted."
) выводится на консоль. Я запускаю это в Windows 7 и пишу в папку, в которой у меня есть полные права (rwx).
Пользователь, задающий вопрос, на который я ссылался, ответил на свой вопрос, но делает это (по моему скромному мнению) не так прямо. В любом случае, у меня возникли проблемы с пониманием этого. Кажется, он / она ссылается на тот факт, что использование BufferedReader
вместо FileInputStream
имело для него значение, но я просто не понимаю, как это применимо.
Java 7, похоже, исправил эту проблему с введением класса java.nio.file.Files
, но, опять же, я не могу использовать Java 7 по причинам, выходящим за рамки моего контроля.
Другие отвечающие на этот упомянутый вопрос ссылаются на то, что это «ошибка» в Java, и дают всевозможные обходы, такие как явный вызов System.gc()
и т. Д. Я пробовал все это, и они не работают.
Может быть, кто-то может добавить новую перспективу и немного подумать для меня.