假如程序P1将源文件a在写入文件b,另一个程序P2读文件b,程序p2如何判断文件b已经传输结束?
p1和p2是不同的进程。
我的具体情况时:ftp客户上传文件到一个我的ftp server上,我用一个java程序扫描ftp上传目录,并对里面的文件进行处理。问题是我的ftp服务器(也是用java写的)在文件开始传输的时候就建了一个文件,所以我不知道这个文件是否传输完了?

解决方案 »

  1.   

    楼主,一般这种情况可以采用简单的文件后缀名来区分。如一个目录你想要扫描的是*.one文件。那么正在上传中的文件可以命名为*.one.new,待文件传送完成后,更改该文件名为*.one即可。
      

  2.   

    frilly(秋◆水) 才是正解啊,liming1983() 说的是一个特例。
      

  3.   

    楼上所说的情况需要更改FTP协议代码或者对原始文件数据进行加工。这样都会增加代码的复杂度。如果全部是由自己实现的一个单独文件传送程序还好些,倘若直接使用的第三方协议包的话我是怕麻烦拉,呵呵。
      

  4.   

    不如直接用文件锁(FileLock)实现,P1传文件的时候直接取得文件锁,这样P2在访问文件时挂起,直到P1释放文件锁