簡體   English   中英

Java nio WatchService:觀看Windows驅動器列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM