Удаление файла Java 6

Я осознаю, что этот вопрос - яростный дубликат этот вопрос. Однако , теперь я прочитал эту страницу дважды, а некоторые разделы - 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();
}

Он не генерирует никаких бросаемых значений, ошибок или исключений (я включил их, чтобы исключить любые и все крайние случаи). Второй оператор печати ( «Файл не был удален.» ) выводится на консоль. Я запускаю это в Windows 7 и пишу в папку, в которой у меня есть полные разрешения (rwx).

Пользователь, задавший вопрос, на который я ссылался, ответил на свой вопрос, но делает это (по моему скромному мнению) не таким простым способом. В любом случае, мне сложно это понять. Он / она, кажется, намекает на тот факт, что использование BufferedReader вместо FileInputStream имело для него / нее значение, но я просто не понимаю, как это применимо.

Похоже, что в Java 7 эти проблемы были устранены путем введения класса java.nio.file.Files , но, опять же, я не могу использовать Java 7 по причинам, не зависящим от меня.

Другие ответчики на упомянутый вопрос ссылаются на то, что это «ошибка» в Java, и предлагают всевозможные обходные пути, такие как явный вызов System.gc () и т. Д. Я перепробовал все эти и они не работают.

Может быть, кто-нибудь сможет добавить свежую точку зрения и немного поразмыслить за меня.

11
задан Community 23 May 2017 в 11:51
поделиться