java - 为什么这段代码会在 Windows 上消失?

标签 java apache-commons

我正在尝试将一些代码从 Linux 移植到 Windows。我真的对 Windows 了解不多,所以我有点盲目。有问题的代码尝试使用 org.apache.commons.io.FileUtils 删除一些目录

  // If the mergesegs worked, delete the segment dirs
    for (File file : segments.listFiles())
    {
        if (!file.equals(mergedSegFile))
        {
            LOG.debug("deleting segment dir " + file);
            FileUtils.deleteDirectory(file);
        }
    }

segments是一个文件,因为是 mergedSegFile .它死于 IOException "Unable to delete file: c:\www\tomcat\crawls\test\TestingCode.site\crawldir\segments\20101128194700\parse_test\part-00000\data" .

这些文件是由之前运行的同一程序(执行一些 Nutch 爬行)创建的。做一个 ls -l在cygwin下显示用户和组是正确的,但是perms是000。

更多信息:

  • dir没有告诉我任何关于权限的信息。
  • 我可以用del删除目录在 cmd.exe 窗口或 rm -rf在 cygwin bash 窗口上。
  • 有问题的文件及其所在的目录是在同一程序的同一次运行中创建的。
  • 计算机运行的是 Windows 7,所以我认为这意味着它是 NTFS。

最佳答案

这里有很多可能性。这条路本身看起来还不错。最好的办法是尝试从命令提示符下手动删除该目录,然后看看会出现什么错误。

要检查的事情:

  • 应用程序正在使用该目录或其任何内容吗?
  • 该目录或其任何文件是只读的吗? (检查 dir,而不是 ls)。
  • 该目录或其任何文件是否具有特殊权限,而您不是管理员?
  • 顺便说一句,我猜这是 NTFS?

关于java - 为什么这段代码会在 Windows 上消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4300088/

相关文章:

java - 使用 apache common Email 使用 "on behalf of"发送电子邮件

java - Android 如何向此 : new java.net.URL ("http://example.com/").openStream() 添加 header

java - 在 Spark 中使用 groupBy 聚合函数计数使用情况

java - 如何将两个 long 转换为字节数组 = 如何将 UUID 转换为字节数组?

java - 使用 Apache Commons CompareToBuilder 降序排序

java - 在Matlab环境中运行Java代码的步骤?

java - apache-commons-config PropertiesConfiguration : comments after last property is lost

java - 如何知道构建是否已完成且没有失败

java - 如何从 Activity 调用自定义 View 中的函数

java - 在基于 fragment 的主从流程中自定义 ListView?