【问题标题】:I can't delete a file in Java (Windows 7)我无法在 Java 中删除文件(Windows 7)
【发布时间】:2013-06-07 13:34:15
【问题描述】:

我在 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,我不明白为什么。也没有异常发生。

【问题讨论】:

  • 您是否检查了权限以及谁有权删除文件?还要检查路径。
  • 如果这是 Java 7,放弃File,使用Files
  • 查看该代码,文件变量似乎从未设置为空值?
  • 文件还是Null
  • 一些澄清:我使用的是 Java 6(不能切换到 7),我需要代码也可以在 SunOS 上工作

标签: java windows-7


【解决方案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();
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 移动例如C:/test.txt 文件到 C:/TestDirectory/test.txt
    • 我的文件写在 D:\u119255\Desktop
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • file 不能为空,因为如果为空,则应抛出 NullPointerException
      • 抱歉,忘记了文件实例化所在的行
      • 是的,它必须返回 NullPointerException,但我们看不到整个代码。我想这段代码被 try/catch 包围了。
      【解决方案5】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多