1

使用以下代码在 Windows 7 中删除文件时遇到一些问题:

    private static final String WIN_DIR_TEST = "D:"+File.separator+"Users"+File.separator+"u119255"+File.separator+"Desktop"+File.separator; 
    ...
    File file = null;
    FileWriter fileWriter = null;
    String localPath = WIN_DIR_TEST.concat("abc.degno");
    file = new File(localPath);
    fileWriter = new FileWriter(file, true);
    fileWriter.write("qwertyuiop\n");
    fileWriter.close();
    ftp.send(localPath, distantPath);
    file.delete();

最后一行总是返回 false,我不明白为什么。此外,不会发生异常。

4

5 回答 5

1

尝试像这样进行异常处理:

try {
    if (file.delete()) {
        System.out.println(file.getName() + " is deleted!");
    } else {
        System.out.println("Delete operation is failed.");
    }
} catch (Exception e) {
    e.printStackTrace();
}
于 2013-06-07T13:40:46.783 回答
1

Java 在写入直接位于 C: 硬盘(或安装 Win 的磁盘)中的文件时经常遇到问题。将文件移动到 C: 上的子文件夹。

于 2013-06-07T13:50:24.987 回答
1

尝试使用file.deleteOnExit()而不是file.delete()

如果这可行,那么您的代码中可能有一些东西仍然对文件有句柄。

于 2013-06-07T14:13:38.910 回答
0

这很简单,因为正如我从您的代码中看到的那样,“文件”始终等于 null :) 您在哪里初始化文件变量?

于 2013-06-07T13:41:43.933 回答
0

我在删除包含其他文件的文件夹时遇到了问题。

所以我最终以递归方式删除文件夹。

    private void deletedFile(File file)
{
    if ( file.isFile() )
    {
        file.delete();
    }
    else
    {
        File[] subFiles = file.listFiles();

        for ( File subFile : subFiles )
        {
            deletedFile(subFile);
        }
        file.delete();
    }
}
于 2015-03-23T17:13:03.237 回答