Nio2类的Watch Service API存在问题

时间:2012-02-24 09:29:50

标签: java filesystems nio2

我正在使用nio.2类的Watch Service API来观察我的项目中的特定目录(OS平台Ubuntu 11.10)。无论何时进行更改,例如,如果将新文件名为abc.json添加到监视目录,它首先触发CREATED事件,然后立即触发MODIFIED事件。我发现这是因为操作系统首先创建一个0字节文件,然后修改它。应该在http://java.dzone.com/news/how-watch-file-system-changes给出的代码中进行哪些更改,以便仅触发CREATE事件而不是MODIFIED事件。

其次,当触发MODIFY事件时,event.context()。toString();方法给出类似 .goutputstream-N2Z89V 的输出,而不是CREATED或DELETED事件给出的文件名。我如何获得修改后的文件名?

1 个答案:

答案 0 :(得分:0)

如果你必须对数据进行一些处理,那么最好处理Modify事件,因为在创建时文件有零字节(空文件)。

尝试此操作以获取文件名

Path _directoryToWatch;
String path = _directoryToWatch.resolve(watchEvent.context()).toString();