强制java释放Java中的所有文件锁/句柄

我的 Java应用程序(这是相当多的代码)执行大量的文件操作.在我的应用程序中,我需要将文件一个位置移动到另一个位置,因此我正在使用JDK7中的Files.move方法.

当我尝试这样做,我收到一个错误告诉我该文件正在使用中.我知道一个事实,这是我的代码锁定这个资源的一部分.

调用移动/重命名我的文件函数之前,如何强制我的Java应用程序释放所有的锁?

如果这是不可能的,是否有一个简单的方法来检查我的代码的哪个部分锁定文件?通过我的整个代码库来查找未封闭的文件句柄将是一个噩梦,考虑到代码数量.

谢谢

解决方法

File()对象不会锁定文件,但FileStream(FileInputStream / FileOutputStream)会锁定它.所以你必须为你的Streams写一个HelperClass(例如Singleton),记录所有的Streams.

但是请注意,如果您的代码泄漏,那么修复该错误关闭所有文件更好.

相关文章

应用场景 C端用户提交工单、工单创建完成之后、会发布一条工...
线程类,设置有一个公共资源 package cn.org.chris.concurre...
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量