如何更改主文件夹的文件和子文件夹?

时间:2012-04-19 15:21:16

标签: java sync

我正在尝试处理文件或文件夹的子文件夹中的更改,然后将它们上传到FTP(如同步文件夹),但我不知道如何做到这一点..任何人都可以给我线索或在哪里找到/学习制作它?我宁愿用Java做。

谢谢!

1 个答案:

答案 0 :(得分:4)

Watch for Changes in a Directory

摘自本教程:

创建监视服务并注册事件

第一步是使用FileSystem类中的newWatchService方法创建一个新的WatchService,如下所示:

WatchService watcher = FileSystems.getDefault().newWatchService();

接下来,使用监视服务注册一个或多个对象。可以注册实现Watchable接口的任何对象。 Path类实现了Watchable接口,因此每个要监视的目录都被注册为Path对象。

与任何Watchable一样,Path类实现两个寄存器方法。此页面使用双参数版本,注册(WatchService,WatchEvent.Kind ...)。 (三参数版本采用WatchEvent.Modifier,目前尚未实现。)

使用监视服务注册对象时,可以指定要监视的事件类型。支持的StandardWatchEventKinds事件类型如下:

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);