怎么检查文件是否在其他文件在另一程序中打开开

关于JAVA中如何判断一个文件是否被使用 -
- ITeye技术网站
最近在做一个视频网站,其中需要判断某个文件是否被其它进程使用,找了一下发现JAVA本身的文件类并没有此类的功能,想了许久,想到了一个间接的方法,供大家参考。
原理就是通过对文件操作,看是否能够成功,以此来判断。众多的IO操作中,我选择的是renameTo方法,因为他速度快,对文件还不会产生改变。
代码很简单:
File file=new File("test.avi");
if(file.renameTo(file)){
System.out.println("文件未被操作");
System.out.println("文件正在被操作");
大家有其他好的建议希望提出来,谢谢。
浏览 20658
论坛回复 /
(23 / 16813)
我有个建议,可以利用一个filename.lock空文件,某个线程读文件的时候,同时生成这个lock文件。所有进程的逻辑应该是1. 读取当前目录下文件 name list.2. 查看要处理的文件是否有相应同名的lock文件3. 如果没有则生成lock文件,并进行写操作4. 操作完毕,删除lock文件采用这种方式,写了一个测试程序,还是会出现问题。当生成lock文件之前,如果有多个线程已经判断出lock文件不存在,进而开始操作此文件,此时还是会出现并发问题。
我有个建议,可以利用一个filename.lock空文件,某个线程读文件的时候,同时生成这个lock文件。所有进程的逻辑应该是
1. 读取当前目录下文件 name list.
2. 查看要处理的文件是否有相应同名的lock文件
3. 如果没有则生成lock文件,并进行写操作
4. 操作完毕,删除lock文件
单个程序使用是可以,但是两个不同vm,或者还有其他应用程序的话,又怎么样
但是个程序的话都可以用个全局变量去限制吧,干嘛一定弄个lock文件
我有个建议,可以利用一个filename.lock空文件,某个线程读文件的时候,同时生成这个lock文件。所有进程的逻辑应该是
1. 读取当前目录下文件 name list.
2. 查看要处理的文件是否有相应同名的lock文件
3. 如果没有则生成lock文件,并进行写操作
4. 操作完毕,删除lock文件
这个办法不错,Lucene中建立索引,就是用这个方法的。
在创建索引的时候,给文件夹加一个file.lock,完成操作后删除这个文件!
zygege 写道应该可以吧
try{
if (file.canRead()){
&&&& JOptionPane.showMessageDialog(this, "OK,文件可以读取!");
&&&&&&&& }else{
&&&&&&&&&&&&& JOptionPane.showMessageDialog(this, "抱歉,文件正在被另一进程占用!");
&& }catch(IOException e){}
这种方式搞不定吧,如果访问时文件是打开的,程序也判断不出来
嗯,确实,没仔细看楼主需求,不过看过楼主一些重命名的方法,我觉得也不妥,因为,假如一个文件不是独占打开的,还不是照样能RENAME么!
我有个建议,可以利用一个filename.lock空文件,某个线程读文件的时候,同时生成这个lock文件。所有进程的逻辑应该是
1. 读取当前目录下文件 name list.
2. 查看要处理的文件是否有相应同名的lock文件
3. 如果没有则生成lock文件,并进行写操作
4. 操作完毕,删除lock文件
应该可以吧
try{
if (file.canRead()){
&&&& JOptionPane.showMessageDialog(this, "OK,文件可以读取!");
&&&&&&&& }else{
&&&&&&&&&&&&& JOptionPane.showMessageDialog(this, "抱歉,文件正在被另一进程占用!");
&& }catch(IOException e){}
这种方式搞不定吧,如果访问时文件是打开的,程序也判断不出来
我记得在csdn 的博客上有一篇关于 文件锁的文章,可以判断文件是否在使用,在nio包下
nio的文件锁是依赖平台的
tryLock ???
cpdw 写道如果是自己的程序,用锁啊什么的应该能解决问题,但如果操作文件的不是自己的程序,就比较头疼
不是只有Lock 才有tryLock方法
& 上一页 1
浏览: 42935 次
来自: 北京
rrroger 写道我有个建议,可以利用一个filename. ...
对于linux是不行的....
楼主,那个我遇到了 java.awt.Color这个不存在的错 ...
有没有代码啊,发我一份,我的始终获取不到old值.vb.net中如何检测一个已知的文件是否已经被打开或者被其他应用程序调用vb.net中如何检测一个已知的文件是否已经被打开或者被其他应用程序调用,急。。。
用这个吧,判断系统进程中是否含有这个文件的进程。这样应该完全可以判断文件是否被打开了  VB.NET code  Dim filename As String = &02.xls&
Dim ps() As Process = Process.GetProcesses
Dim p As Process
For i = 0 To ps.Length - 1
If p.MainWindowTitle.Contains(filename) Then
MsgBox(&文件打开&)> 如何判断..文件是否打开或说程序是否在运行?嗯...是这样的我打开一个word文件假设名字为1.d
如何判断..文件是否打开或说程序是否在运行?嗯...是这样的我打开一个word文件假设名字为1.d
wincxp & &
发布时间: & &
浏览:1 & &
回复:3 & &
悬赏:0.0希赛币
如何判断..文件是否打开或说程序是否在运行?嗯...是这样的
我打开一个word文件 & 假设名字为1.doc
然后int & FileHand & = & FileOpen( &1.doc &,0);
现在发现如下情况
如果1.doc没有运行,也就是说 & 没有打开这个word文件
那么FileOpen返回 & 非 & -1的数
如果1.doc运行,既打开这个word文件
FileOpen返回 & -1...
同时大家也注意到,对于同一个word文件,只能打开1个
而txt则不同
txt可以打开多个,
只要txt存在 & fileopen()
始终返回文件句柄...
问 & 如何确确知道 & 一个文件以窗口的形式被打开了?????????
使用独占方式打开
如果失败则表示......
wind_wolf00 & &
10:38:58 & &
& & (0)(0)word打开*.doc是用独占方式打开的,所以可以判断。
记事本打开文本文件不是,如果不是独占根本是没有办法判断的。
wind_hmily & &
10:38:58 & &
& & (0)(0)FindWindow不知道能不能解决这个问题wind_wgf2006 & &
10:38:58 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&打开的文件被其他程序修改时如何自动检测并刷新内容_ultraedit吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,250贴子:
打开的文件被其他程序修改时如何自动检测并刷新内容收藏
文件更改检测已经开了,但是好像没反应,该怎么办啊,各位大哥帮帮忙!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或11:03 提问
通过QQ打开文件选择其他应用打开,是怎么判断哪些应用程序可以打开的?求教大神!
iOS,通过QQ或第三方去打开PDF文件或是视频,选择用其他应用打开。系统会默认的列出哪些应用程序可以打开,这是怎么做到的,在程序中怎么判段?请大神指教!!!
按赞数排序
参考一下这个
iOS 用其它应用打开文件研究
UIDocumentInteractionController 第三方应用中打开自己的文件 方法
系统会默认的列出哪些应用程序可以打开,应该是已经向系统注册到关联应用。}

我要回帖

更多关于 安装程序无法打开文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信