java调用notepad打开txt相关问题

yebanghua 2012-11-02 04:08:17
在java程序中,用Desktop类调用notepad打开一个.txt类,由于文件文件本身的问题,无法检测到文件是否关闭。
查了很多资料,有童鞋说可以测文件所在文件夹是否被锁,实测在windows系统中双击打开是可行的,但是用Desktop类在java程序中这个方法不可行。
求解 Desktop类打开文件和在windows系统中双击打开有什么不同?如何才能检测一个.txt文件是否正在被打开?
另,cmd和rundll32打开文件的方法都试过了...都不行。
...全文
321 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yebanghua 2012-11-06
  • 打赏
  • 举报
回复
引用 5 楼 yousun4688 的回复:
使用程序编辑的话就是使用文件处理流打开
你还是没懂我的意思 我不是要读文件,是要打开文件。就像你在桌面上用鼠标双击打开一样的效果
yousun4688 2012-11-05
  • 打赏
  • 举报
回复
使用程序编辑的话就是使用文件处理流打开
yebanghua 2012-11-05
  • 打赏
  • 举报
回复
引用 2 楼 yousun4688 的回复:
这个好像没有办法,阻塞式的读写可以试试
我要做的不仅仅是读取文件,我要打开编辑(使用系统默认打开方式,notepad)。
yebanghua 2012-11-05
  • 打赏
  • 举报
回复
引用 1 楼 dr8737010 的回复:
看的稀里糊涂的,如何才能检测一个.txt文件是否正在被打开? 内核有文件描述符对应于每一个被打开的文件,而且一定是最小的未被使用的,所以你可以调用open系统调用来看看得到的文件描述符是不是为3(0,1,2被标准输出,输入和错误流给占用了),如果不为3说明这个文件被其他进程打开过。 当然上面的是Linux中的概念,我不确定Windows上是不是也这样规定的。 对……
说一下我的应用场景吧。 我现在需要写一个小插件,用于编辑文件。在点击保存时,需要保证文件已经关闭。对于.doc等格式的文件,采用重命名的方法检测,但是.txt格式的文件不能用这个方法。所以采用重命名文件夹的方式。(.txt文件在编辑时,文件本身不锁定,绝对路径锁定)但是使用中发现在系统中采用双击打开的方式上述验证方法成立,而用java代码打开文件,上述验证方法不成立。
yousun4688 2012-11-02
  • 打赏
  • 举报
回复
这个好像没有办法,阻塞式的读写可以试试
BadPattern 2012-11-02
  • 打赏
  • 举报
回复
看的稀里糊涂的,如何才能检测一个.txt文件是否正在被打开?
内核有文件描述符对应于每一个被打开的文件,而且一定是最小的未被使用的,所以你可以调用open系统调用来看看得到的文件描述符是不是为3(0,1,2被标准输出,输入和错误流给占用了),如果不为3说明这个文件被其他进程打开过。

当然上面的是Linux中的概念,我不确定Windows上是不是也这样规定的。
对于java来说有个抽象叫FileDescriptor代表文件描述符。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧