Files.move更改文件权限

时间:2016-07-23 14:06:17

标签: java windows nio

使用Java 7 NIO.Files class.

时遇到问题

我必须使用5个不同大小的纯文本文件执行一些操作,在这种情况下,从20KB到23MB。

收到文件后,我将它们复制到临时文件夹中:

Files.copy(originalPath, tempPath, StandardCopyOption.REPLACE_EXISTING);

操作已完成,但23MB文件在复制的文件中有更改的权限:我注意到尝试手动删除文件,在原始文件中不需要额外的权限,但在复制的文件中,Windows会弹出一个弹出窗口要求你的管理员权限......这只发生在23MB,较小的那些保留与原件相同的权限。

当我尝试使用此方法删除复制的23MB文件时,问题出现在我身上:

boolean isDeleted = Files.delete(tempPathOf23MBFile);

执行操作没有例外且isDeleted被指定为true ,但23MB文件仍保留在文件夹中......稍后当我尝试使用相同的方法擦除文件夹时,它会引发一个异常,因为文件夹不为空... 最奇怪的是,当我关闭Eclipse时,23MB文件消失了!

我尝试使用File.deleteFiles.deleteIFExists执行相同的任务,同样的情况也会发生。

通过这个论坛,我发现它可能是资源泄漏...所以我已经审查了所有缓冲区和所有内容,它们在删除时关闭...绝望,我已经分配了所有对象我在删除的那一刻变为null(我用调试检查了所有这些)......但没有成功,问题仍然存在!!

你能帮帮我吗? 我担心在操作中重要的是文件大小,因为理想情况下,它应该以任何大小执行,甚至大于23MB

1 个答案:

答案 0 :(得分:0)

这与以下内容有关:

bugs.sun.com/bugdatabase/view_bug.do?bug_id=4715154

我必须像珍妮史密斯所说的那样做:

I can't delete a file in java