为什么这段代码在Windows上死机?

时间:2010-11-29 00:56:25

标签: 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抓取)。在cygwin下执行ls -l表示用户和组是正确的,但是烫发是000。

更多信息:

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

1 个答案:

答案 0 :(得分:3)

这里有很多可能性。路径本身并不坏看。最好的办法是尝试从命令提示符手动删除该目录,看看你得到了什么错误。

要检查的事项:

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