2014-05-20 37 views
0

我想选择哪个文件系统事件我想要获得(ENTRY_CREATE,ENTRY_MODIFY和/或ENTRY_DELETE)。是否可以将事件保存在ArrayList<WatchEvent.Kind>中,并将此ArrayList中的所有事件与路径一起注册? 我的想法是这样的:让Path.register()注册一个ArrayList

import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE; 
import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY; 
import static java.nio.file.StandardWatchEventKinds.ENTRY_DELETE; 
... 
ArrayList<WatchEvent.Kind> eventList; 
... 
addEvent(ENTRY_MODIFY); 
addEvent(ENTRY_CREATE); 
... 
for (WatchEvent.Kind<?> event : eventList) { 
     key = dir.register(watcher, event); 
    } 
... 
public void addEvent(WatchEvent.Kind event) { 
    eventList.add(event); 

} 

这似乎登记只有最后一个,在我的例子ENTRY_DELETE到文件系统。我怎样才能注册所有这些,以便我可以添加我想要注册的事件与addEvent()方法?

回答

0

我是通过我自己找到的,它非常简单。 只需创建一个ArrayList,添加您想要添加的所有事件,并将列表中的数组从列表中移出。这是可以做到这样的:

ArrayList<WatchEvent.Kind> eventList = new ArrayList<>(); 
eventList.add(StandardWatchEventKinds.ENTRY_CREATE); 
WatchEvent.Kind[] eventArray = eventList.toArray(new WatchEvent.Kind[eventList.size()]); 
key = dir.register(watcher, eventArray); 

是很重要的,没有任何元素在阵列null