Java 为什么这段代码会在Windows上消亡?

Java 为什么这段代码会在Windows上消亡?,java,apache-commons,Java,Apache Commons,我正在尝试将一些代码从Linux移植到Windows。我对窗户真的不太了解,所以我有点盲目。有问题的代码试图使用org.apache.commons.io.FileUtils删除一些目录 // If the mergesegs worked, delete the segment dirs for (File file : segments.listFiles()) { if (!file.equals(mergedSegFile)) {

我正在尝试将一些代码从Linux移植到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而死亡
“无法删除文件:c:\www\tomcat\crawls\test\TestingCode.site\crawdir\segments\20101128194700\parse\u test\part-00000\data”

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

进一步资料:

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

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

      检查事项:

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

      -我可以用“del”删除文件。dir不会告诉我任何权限。我假设它是NTFS,它是Windows7,“数据”是文件还是目录?此外,它是否有任何特殊权限?权限-使用浏览器在“属性”下查看文件。第一点“正在使用目录或其任何内容”是最有可能的解释。可能是试图删除目录的程序使用了目录或其中的文件?提取删除目录的代码并生成小测试代码,该代码将目录作为命令行参数并删除它。它有效吗?也许你能在异常的堆栈跟踪中获得更多信息?