"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que File.delete() retorna falso apesar da existência e das permissões do arquivo?

Por que File.delete() retorna falso apesar da existência e das permissões do arquivo?

Publicado em 17/11/2024
Navegar:606

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

File.delete() retorna falso apesar da verificação de existência e permissões

Ao tentar excluir um arquivo após gravá-lo usando FileOutputStream, alguns usuários encontram um problema inesperado em que file.delete() retorna falso. Isso ocorre apesar do arquivo existir e de todas as verificações de permissão (.exists(), .canRead(), .canWrite(), .canExecute()) retornarem verdadeiras.

Após uma investigação mais aprofundada, parece que um bug sutil existe em Java, o que pode impedir a exclusão bem-sucedida de arquivos mesmo quando todas as condições necessárias forem atendidas. Para resolver esse problema, é crucial chamar System.gc() antes de excluir o arquivo.

O trecho de código a seguir incorpora esta solução no método writeContent original:

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
        }
    }
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3