得到本地的一个文件,另一个程序不断往里面添加文件,为保证数据的完整性,读取之前希望该文件已完成写入,该如何判断?谢谢

解决方案 »

  1.   

    写文件开始时先写一个Start.txt,表示开始写,结束后写个end.txt表示结束
      

  2.   

    1. OutputStream写的时候文件不可被读取
    2. 写文件时使用临时文件, 写完后重命名到正式文件
      

  3.   

    我还没有写程序做试验。按照我的理解,如果那个产品正在写文件,你这边以读的方式打开文件能成功吗?难道没有抛出异常吗?如果真是这样的话,有两个建议:1. 先用 File.canRead() 测试一下,看能不能达到预期的效果。2. 如果上面的不行,再试试 File.canWrite()我就不信操作系统能让两个程序同时写一个文件。   8=)
      

  4.   

    两个程序可以同时写一个文件吧,比如两个记事本写一个txt
    关键看程序打开文件时是否用了独占模式.没用就可以用另一个程序同时写
      

  5.   

    > 两个程序可以同时写一个文件吧,比如两个记事本写一个txt这种情况只能算是“两个程序同时编辑一个文件”,并不是“同时写”。记事本程序只有在“保存文件”的那一瞬间才是在“写文件”。
      

  6.   

    推荐把写入方法和读取方法写在同一个类中,并且用synchronizded 修饰这两个方法;这样可以互斥的来访问之;应该能达到楼主的目的
      

  7.   

    这不是线程同步吧,好象是进城,所以yong java比较麻烦,。
    synchronized 肯定没有用,可以考虑与操作系统系统相关的api(需要调用本地方法)比如FileLock,在读的时候加锁,不让其他人写,当然需要File.canRead() 判断是否可以读
      

  8.   

    支持 crazycy(崔毅) ( 一星(中级))
      

  9.   

    synchronizded 可以解决这个问题