使用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.delete
和Files.deleteIFExists
执行相同的任务,同样的情况也会发生。
通过这个论坛,我发现它可能是资源泄漏...所以我已经审查了所有缓冲区和所有内容,它们在删除时关闭...绝望,我已经分配了所有对象我在删除的那一刻变为null(我用调试检查了所有这些)......但没有成功,问题仍然存在!!
你能帮帮我吗? 我担心在操作中重要的是文件大小,因为理想情况下,它应该以任何大小执行,甚至大于23MB答案 0 :(得分:0)
这与以下内容有关:
bugs.sun.com/bugdatabase/view_bug.do?bug_id=4715154
我必须像珍妮史密斯所说的那样做: