[英]Java nio WatchService: Watch Windows drives list
我希望在连接USB驱动器时收到通知。 所以java sais:“Drive H:created”。 有没有办法用WatchService做到这一点? 观看根目录不起作用。 它只是监视当前驱动器的根目录:Paths.get(“/”)。register
你不能用WatchService
做到这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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.