java 如何避免读取到正在被写入的文件 5C

我现在需要定时从一个目录中获取文件,然后转移到其他文件夹,再删除源文件,现在出现一个情况,一个比较大的文件是由其他程序写入但还没有写完,我的程序拿到这个文件之后马上就进行操作并删除源文件,导致文件损坏,我现在要求只要是正在被其他程序写入的文件都不去操作它,那如何判断该文件是正在被写入的文件?(注:我不能修改写入文件的程序)

4个回答

可以判断下当前文件是否正在写入,如果写入就不操作

可以在文件内容结尾增加一个标记(比如 当前文件是否正在读取:Y 之类的),如果是Y,则不做修改,如果是N,则将N改为Y,再进行修改,修改完后再把Y改回来

因为多线程并发引起的,你加个synchronize 双重锁

FileChannel.tryLock尝试给文件加锁然后去处理

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问