これは 1 年前に他の場所で尋ねられたことは知っていますが、最新情報を探しています。
WatchService を使用して、そこに作成されている新しいファイルのディレクトリを監視する Java 7 のプログラムがあります。ローカル マシン (c:\NewFiles など) にディレクトリを登録すると、すべて問題ありません。ただし、ネットワークドライブ上のフォルダーをリッスンしようとすると、コンパイルして実行しますが、イベントの通知を受けていないように見えるため、すぐに終了します..これは私のコードのほんの一部です...
private final WatchService watcher;
private final Map<WatchKey, Path> keys;
this.watcher = FileSystems.getDefault().newWatchService();
this.keys = new HashMap<>();
ディレクトリを登録します...
String srcDirPath = "G:\\NewFiles";
Path dir = Paths.get(srcDirPath);
WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
keys.put(key, dir);
次に、イベントをチェックするループの最後に...
if (keys.isEmpty()) {
System.out.println("Drive is inaccessible");
break;
}
ここで、「ドライブにアクセスできません」という警告が常に表示されます。Java ファイルをこのネットワーク ディレクトリにコピーして、そこから実行しようとしましたが、同じ問題が発生します。
このように Watchservice をローカル マシンから実行して、ネットワーク ドライブ上のディレクトリへの変更をリッスンすることはできますか? ここで許可またはファイアウォールの問題が発生していますか? Windows 7 を使用していますが、ネットワーク ドライブも Windows 7 マシンにある可能性があります。