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

Pau*_*lin 5 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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

这些文件是由同一程序的上一次运行创建的(它执行了一些Nutch爬行).做一个ls -lunder cygwin显示用户和组是正确的,但是perms是000.

更多信息:

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

Ebo*_*ike 3

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

需要检查的事项:

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