返回信息流具体问题是:在一个线程中通过InputStream excel = new FileInputStream(zipFilePath)打开了一个文件名为zipFilePath的文件,在另外一个线程需要判断zipFilePath这个文件是否处于打开状态,也就是excel还没有执行excel.close()。不知道java有没有方法判断?
不知道有没有说明白,通俗点的说法:怎么判断一个文件是否正在使用?
这是一条镜像帖。来源:北邮人论坛 / java / #17431同步于 2011/3/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[求助]java怎么判断文件处于打开状态
hotcode
2011/3/10镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
其实即使一个不关闭,另一个也可以同时打开的吧。
Windows可能复杂一些。看看这个行不行:
http://stackoverflow.com/questions/1390592/java-check-if-file-is-already-open
File f = new File(zipFilePath);
if(f.renameTo(f)){
//文件没被使用
}else{
//文件在用
}
这个在windows下是可以的,但是在linux下不行
【 在 snowtree 的大作中提到: 】
: File f = new File(zipFilePath);
: if(f.renameTo(f)){
: //文件没被使用
: ...................
Linux下可以直接同时打开一个文件,不用锁。很随意的。
【 在 hotcode 的大作中提到: 】
: 这个在windows下是可以的,但是在linux下不行
: 【 在 snowtree 的大作中提到: 】
: : File f = new File(zipFilePath);
: ...................
我现在是要判断文件是否关闭,关闭了就把它删除掉。
现在的问题是,在linux下,即使文件处于打开状态,也一样能够删除
所以我需要判断文件是否被打开
【 在 wks 的大作中提到: 】
: 其实即使一个不关闭,另一个也可以同时打开的吧。
: Windows可能复杂一些。看看这个行不行:
: http://stackoverflow.com/questions/1390592/java-check-if-file-is-already-open
: ...................
【 在 hotcode 的大作中提到: 】
: 这个在windows下是可以的,但是在linux下不行
: 【 在 snowtree 的大作中提到: 】
: : File f = new File(zipFilePath);
: ...................
这个在linux下倒还真没用过,你试过了,不可以是吧?
恩 试过了
你这方法在window下确实是可以的,但是linux下不行
【 在 snowtree 的大作中提到: 】
: : 这个在windows下是可以的,但是在linux下不行
: : 【 在 snowtree 的大作中提到: 】
: : : File f = new File(zipFilePath);
: ...................
直接删掉。
Linux允许这样做。删了以后,目录里就看不到这个文件了,磁盘上暂时还放着内容。但是,如果另一个程序正在读这个文件,那么仍然可以继续读。只要它也关掉,这个文件及其空间就真的被操作系统垃圾回收了。
【 在 hotcode 的大作中提到: 】
: 我现在是要判断文件是否关闭,关闭了就把它删除掉。
: 现在的问题是,在linux下,即使文件处于打开状态,也一样能够删除
: 所以我需要判断文件是否被打开
: ...................
哦,好像linux确实是这样处理得。。。
如果这样的话,我想我的问题就有解决方法了。我去试一下。
谢谢各位了
【 在 wks 的大作中提到: 】
: 直接删掉。
: Linux允许这样做。删了以后,目录里就看不到这个文件了,磁盘上暂时还放着内容。但是,如果另一个程序正在读这个文件,那么仍然可以继续读。只要它也关掉,这个文件及其空间就真的被操作系统垃圾回收了。
: 【 在 hotcode 的大作中提到: 】
: ...................