我在使用Java 7 NIO.Files class.
时遇到问题
我必须对5个不同大小的纯文本文件执行一些操作,在这种情况下,从20 KB到23 MB。
一旦收到文件,我就把它们复制到一个临时文件夹中:
Files.copy(originalPath, tempPath, StandardCopyOption.REPLACE_EXISTING);
字符串
操作完成,但特权,23 MB的文件已在复制的一个变化:我注意到,试图手动删除文件,在原来的一个没有额外的特权是必需的,但在复制的一个Windows提出了一个弹出窗口,要求您的管理员权限.这只发生在23 MB,较小的保持相同的特权,因为他们的原件。
当我尝试使用此方法删除复制的23 MB文件时,问题出现在我面前:
boolean isDeleted = Files.delete(tempPathOf23MBFile);
型
该操作被执行没有异常,并且isclose被分配为true,但是23 MB的文件仍然在文件夹中.
我试着用File.delete
和Files.deleteIFExists
执行相同的任务,也发生了同样的情况。
通过这个论坛,我发现这可能是一个资源泄漏.所以我已经审查了所有的缓冲区和一切,他们在删除的时刻关闭.绝望,我已经分配了所有的对象,我在删除的时刻为空(我检查了所有的调试).但没有成功,问题仍然存在!!
你能帮帮我吗?我担心的是,在操作中文件大小很重要,因为理想情况下,它应该以任何大小执行,甚至比23 MB大得多
1条答案
按热度按时间4zcjmb1e1#
是关于:
JDK-4715154 : (fs) Cannot delete file if memory mapped with FileChannel.map (windows)
我不得不这样做说珍妮史密斯在:
file.delete() returns false even though file.exists(), file.canRead(), file.canWrite(), file.canExecute() all return true的