我正在使用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事件给出的文件名。我如何获得修改后的文件名?
答案 0 :(得分:0)
如果你必须对数据进行一些处理,那么最好处理Modify
事件,因为在创建时文件有零字节(空文件)。
尝试此操作以获取文件名
Path _directoryToWatch;
String path = _directoryToWatch.resolve(watchEvent.context()).toString();