qq_20490547
qq_20490547
采纳率0%
2017-08-02 10:20 阅读 3.7k

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

5

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • devmiao devmiao 2017-08-02 16:23

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

    点赞 1 评论 复制链接分享
  • w19930104q 唯灬独尊 2017-08-03 06:16

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

    点赞 评论 复制链接分享
  • weixin_38393985 weixin_38393985 2017-08-03 16:40

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

    点赞 评论 复制链接分享
  • yangm_ingliang yangm_ingliang 2017-08-04 09:48

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

    点赞 评论 复制链接分享

相关推荐