我正在尝试将一些代码从 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/