USB ドライブが接続されたときに通知を受け取りたい。そのため、Java sais:「ドライブ H: 作成されました」。WatchService でこれを行う方法はありますか? ルートディレクトリを監視しても機能しません。現在のドライブのルートを監視するだけです: Paths.get("/").register
質問する
1253 次
1 に答える
4
でそれを行うことはできませんWatchService
。Windows のことしか心配していないので、単純にポーリングFileSystem.getRootDirectories
して変更を検出することができます。
try {
List<Path> roots = asList(FileSystems.getDefault().getRootDirectories());
for(;;) {
Thread.sleep(500);
List<Path> newRoots = asList(FileSystems.getDefualt().getRootDirectories());
for(Path newRoot : newRoots){
if(!roots.contains(newRoot)) {
System.out.println("New drive detected: " + newRoot);
}
}
roots = newRoots;
}
} catch(InterruptedException e) {
e.printStackTrace();
Thread.currentThread().interrupt();
}
FileSystem.getFileStores
これを他のオペレーティング システムで動作させたい場合は、FileStore
.
/e1
private <T> List<T> asList(Iterable<T> i) {
if (i instanceof List) { return (List<T>) i; }
List<T> l = new ArrayList<>();
for (T t : i) {
l.add(t);
}
return l;
}
于 2012-05-30T18:37:30.463 に答える