«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему File.delete() возвращает значение False, несмотря на существование файла и разрешения?

Почему File.delete() возвращает значение False, несмотря на существование файла и разрешения?

Опубликовано 17 ноября 2024 г.
Просматривать:727

Why Does File.delete() Return False Despite File Existence and Permissions?

File.delete() возвращает False, несмотря на наличие и проверку разрешений.

При попытке удалить файл после записи в него с помощью FileOutputStream некоторые пользователи сталкиваются с неожиданной проблемой, при которой file.delete() возвращает ложь. Это происходит, несмотря на то, что файл существует и все проверки разрешений (.exists(), .canRead(), .canWrite(), .canExecute()) возвращают true.

После дальнейшего расследования выяснилось, что возникла незаметная ошибка. В Java существует возможность предотвратить успешное удаление файла даже при соблюдении всех необходимых условий. Чтобы решить эту проблему, крайне важно вызвать System.gc() перед удалением файла.

Следующий фрагмент кода включает это решение в исходный метод writeContent:

private void writeContent(File file, String fileContent) {
    FileOutputStream to;
    try {
        to = new FileOutputStream(file);
        to.write(fileContent.getBytes());
        to.flush();
        to.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        try {
            to.close(); // Close the stream as before
            System.gc(); // Call System.gc() to force garbage collection
        } catch (IOException e) {
            // TODO Handle IOException
        }
    }
}
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3