如果文件已更改,我该如何下载文件?

时间:2012-08-29 09:38:59

标签: java

我正在制作一个程序,它是游戏私人服务器的启动程序。如果我更改服务器,我必须更改客户端,所以我希望它只下载更改的文件,并且不要覆盖旧文件。我正在使用Dropbox来存储文件。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

在Java 7中,您可以使用WatchService

获取通知

使用此API,您可以注册各种活动

ENTRY_CREATE – A directory entry is created.
ENTRY_DELETE – A directory entry is deleted.
ENTRY_MODIFY – A directory entry is modified.
OVERFLOW – Indicates that events might have been lost or discarded. You do not have to register for the OVERFLOW event to receive it.

以下代码段显示了如何为所有三种事件类型注册Path实例:

import static java.nio.file.StandardWatchEventKinds.*;

Path dir = ...;
try {
WatchKey key = dir.register(watcher,
                       ENTRY_CREATE,
                       ENTRY_DELETE,
                       ENTRY_MODIFY);
} catch (IOException x) {
 System.err.println(x);
}

使用WatchEvent,您可以向应用程序调用适当的通知,告知文件已更改并下载

答案 1 :(得分:1)

使用DB维护服务器端的文件版本,或者使用校验和来识别修改后的文件

答案 2 :(得分:0)

首先来看看Dropbox SDK

我还要确保服务器上的每个文件都有一个与之关联的MD5(其他校验和)。您可以下载这些校验和,并将它们与您在本地计算机上安装的文件进行比较。如果任何校验和不同,那么您可以下载所需的文件。

查看How can I generate an MD5 hash?How do I generate an MD5 digest for a file