NIO 2提供新的類別java.nio.file.WatchService可用來偵測檔案或是資料夾有更動的狀況
(適逢假日,說明就簡略點)
package mywatch;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
public class WatchForChange {
public void detectChanges(){
try{
WatchService ws= FileSystems.getDefault().newWatchService(); // 必須要產生WatchService物件
Path path=Paths.get("G:\\0902"); //指定要監聽的資料夾
WatchKey key=path.register(ws, StandardWatchEventKinds.ENTRY_MODIFY);//將路徑註冊一個WatchService以及監聽的Event
while(true){ //創造一個無窮迴圈
key = ws.take();//當事件發生後,將會放入queue,
for(WatchEvent<?> event : key.pollEvents()){//利用迴圈來將所有放在queue裡面的Event讀出
if(event.kind()==StandardWatchEventKinds.ENTRY_MODIFY){//pollEvents裡面如果有ENTRY_MODIFY
System.out.println("Something Changed"); //就輸出文字
}
}
}
}catch (IOException | InterruptedException e){
System.out.println(e.getMessage());
}
}
}
我選的資料夾是我BT下載的資料夾,就會一直輸出"Something Changed"