gpt4 book ai didi

Java nio 监视服务 : Watch Windows drives list

转载 作者:可可西里 更新时间:2023-11-01 11:20:58 27 4
gpt4 key购买 nike

我想在连接 USB 驱动器时收到通知。所以java说:“驱动器H:已创建”。有没有办法用 WatchService 做到这一点?看根目录是行不通的。它只监视当前驱动器的根目录: Paths.get("/").register

最佳答案

您不能使用 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并想出一个方法来get the root path for a 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;
}

关于Java nio 监视服务 : Watch Windows drives list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10821665/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com