假如程序P1将源文件a在写入文件b,另一个程序P2读文件b,程序p2如何判断文件b已经传输结束? 
p1和p2是不同的进程。 
我传送的是压缩包!获取的是别人传输过来的压缩包,怎么才能知道这个压缩包已经传输完毕!

解决方案 »

  1.   

    这个需要传输底层或才IO底层上报进度相关数据。这都没有现成的接口让你用,都要自己实现。比如读取一个本地文件的进度实现可参考以下 int size = 1000;
    byte[] rets = new byte[size];
    File f = new File("xxx.txt");
    FileInputStream fis = new FileInputStream(f);
    fis.read(rets);

    System.out.println("文件大小为XXXX字节,现已读取 n * size字节");代码仅作为思路参考
      

  2.   

    lz的问题表述不清楚啊,
    看了前面几楼,大概总结了下,也不知对不对:
    现在有人向某个文件夹中上传文件,同时lz的一个程序要读取这个文件夹中的文件(先不管是干啥用的),lz的问题就是对这个文件夹中的许多文件,不能判断哪些是已经传送完毕的,哪些只传了一部分。这种情况和下载文件时用md5值判断文件下载是否完整有点儿类似的味道啊。双方在定义接口的时候就应该考虑到这种问题的存在吧,反正如果是随便一个文件是没法儿判断这种完整性的。
    当然也可以检测每个文件的大小是否随时间在改变,过一段时间没改变的话就认为文件已经传输完成神马的
      

  3.   

    使用文件的renameTo()来判断文件是否被占用,从而得出文件是否已经传送完毕!!