我现在需要定时从一个目录中获取文件,然后转移到其他文件夹,再删除源文件,现在出现一个情况,一个比较大的文件是由其他程序写入但还没有写完,我的程序拿到这个文件之后马上就进行操作并删除源文件,导致文件损坏,我现在要求只要是正在被其他程序写入的文件都不去操作它,那如何判断该文件是正在被写入的文件?(注:我不能修改写入文件的程序)
可以判断下当前文件是否正在写入,如果写入就不操作
可以在文件内容结尾增加一个标记(比如 当前文件是否正在读取:Y 之类的),如果是Y,则不做修改,如果是N,则将N改为Y,再进行修改,修改完后再把Y改回来
因为多线程并发引起的,你加个synchronize 双重锁
FileChannel.tryLock
尝试给文件加锁然后去处理