java 怎样判断当前文件被占用或是正在写入? 补充:想要不可两个程序同时改写一个文件

java 怎样判断当前文件被占用或是正在写入? 补充:想要不可两个程序同时改写一个文件,第1张

上面的答案明显是错的,synchronized 只能在同一个JVM进程内,保证只有一个线程或者方法去 *** 作那个文件,无法保证,在同一个 *** 作系统的范围内,没有别的进程去 *** 作这个文件。去网上搜索了下,没有找到想要的答案。看老余到一个勉强满足的,网页链接 ,可以去看下。卖首说下我的理解,一份在磁盘上的文件,会映射到 *** 作系中含数统里面, *** 作系统里面的文件,由不同的进程共享,在 *** 作系统的层次上,应该有 判断文件是否被占用的API,java里面为什么没有,就不得而知了

可以在使用该文件前灶带简加文件锁 删除时判断是隐裤否文件被锁住

RandomAccessFile input=new RandomAccessFile("a.java","rw")

FileChannel channel=input.getChannel()

FileLock lock=channel.tryLock()

如行游果在windows *** 作系统下 只能通过jni调用相关dll

File file=new File("test.avi")

if(file.renameTo(file)){

System.out.println("文件未被 *** 基游燃作")

}else{

System.out.println("文件正在被 *** 磨世作搏虚")

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12274715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存