2

对于从 ftp 服务器检索文件的程序来检查要下载的文件是否是正在进行的传输(在我们决定下载期间有人已经上传此文件)的最佳方法是什么。ftp 客户端 API 是否处理此问题?(例如 apache commons ftp 客户端)。

4

3 回答 3

1

我认为这不太可能。几年前我遇到了类似的问题,我有两个选择。(不幸的是它是 C#,而不是 Java)你可以检查文件是否还在增长(暗示你会有一个小的延迟,因为你需要检查两次)或者你是否使用 Windows(我不知道如何 linux工作)你可以尝试访问这个文件,你应该得到一个异常,该文件正在被另一个进程使用。只有两种可能性和一个让您思考问题的起点。也许其他人想出了一个非常好的解决方案,但现在这对你来说可能是一个小解决方法

于 2012-08-03T11:28:30.063 回答
1

ftp 的设计目的不是告诉您文件是否正在使用,ftp 守护程序最多只能拒绝传输,这在某些服务器中是可配置的。可能有一个服务器可以临时重命名文件或提供一个脚本来这样做,但你必须找到一个。

于 2012-08-03T11:38:23.357 回答
1

不知道这对你来说是否足够,但如果你只需要一些“dum”检查,我会尝试System.getSecurityManager().checkDelete(). 只有在没有打开流的情况下才能删除文件。

于 2012-08-03T11:49:20.600 回答