newWatchService はいくつ作成できますか?
try{
for(Path path : PathList) {
watcher = path.getFileSystem().newWatchService();
} catch (IOException e) {
log.error(e);
}
}
--> 結果: IOExeption: 開いているファイルが多すぎます...
newWatchService はいくつ作成できますか?
try{
for(Path path : PathList) {
watcher = path.getFileSystem().newWatchService();
} catch (IOException e) {
log.error(e);
}
}
--> 結果: IOExeption: 開いているファイルが多すぎます...
ウォッチャー サービスは 1 つだけ作成することになっていると思いますが、そのサービスへの任意のパスを登録します。
Oracle ドキュメント ( https://docs.oracle.com/javase/tutorial/essential/io/walk.html ) で示されている例によると、WatchDir クラスのメンバー変数として作成されるウォッチ サービスは 1 つだけです。「this.watcher」に注意してください
public class WatchDir {
private final WatchService watcher;
クラスの別の場所で...
/**
* Creates a WatchService and registers the given directory
*/
WatchDir(Path dir, boolean recursive) throws IOException {
this.watcher = FileSystems.getDefault().newWatchService();
同じサービスを使用して、特定のフォルダー内のすべてのパスを再帰的に登録します。
最後に、登録はここで行われます...
/**
* Register the given directory with the WatchService
*/
private void register(Path dir) throws IOException {
WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);