Java可以通過使用Java NIO包中的WatchService類來監聽文件變化,并使用Java IO或Java NIO來讀取文件。
以下是一種基本的使用WatchService監聽文件變化的方法:
Path directory = Paths.get("path/to/directory");
WatchService watchService = FileSystems.getDefault().newWatchService();
directory.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY);
while (true) {
WatchKey key;
try {
key = watchService.take();
} catch (InterruptedException e) {
e.printStackTrace();
return;
}
for (WatchEvent<?> event : key.pollEvents()) {
if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
Path modifiedFile = (Path) event.context();
System.out.println("Modified file: " + modifiedFile);
// 讀取文件內容
try {
List<String> lines = Files.readAllLines(directory.resolve(modifiedFile));
// 處理文件內容
} catch (IOException e) {
e.printStackTrace();
}
}
}
key.reset();
}
在上面的代碼中,當監聽到文件修改事件時,會輸出修改的文件路徑,并使用Files.readAllLines方法讀取文件內容。你可以根據需要進一步處理文件內容。
請注意,上述代碼僅監聽文件修改事件(ENTRY_MODIFY),你還可以注冊其他事件,如ENTRY_CREATE和ENTRY_DELETE等,具體可以根據你的需求進行調整。