部落格2
阿新 • • 發佈:2020-12-22
Java中關於檔案的監聽
- 這裡面主要涉及的是檔案的一些常用方法,增刪改查等基本語法
接下來介紹一個具體題目
- 要求輸入一個資料夾: -監聽這個資料夾中是否能有檔案被新增或者刪除
- 下面直接開始程式碼:
package com01;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.NotDirectoryException;
import java.util.ArrayList;
import java.util.List;
public class FileMonitor {
private List<File> lastFiles;
private List<File> thisFiles;
public FileMonitor() {
lastFiles = new ArrayList<File>();
thisFiles = new ArrayList<File>();
}
public void monitor(File file) throws NotDirectoryException {
if (file.isFile()) {
throw new NotDirectoryException (file.getAbsolutePath());
}
List<File> middle = new ArrayList<File>();
while (true) {
lastFiles.clear();
lastFiles.addAll(thisFiles);
thisFiles.clear();
readFile(file);
middle.clear();
middle.addAll(lastFiles);
middle.removeAll(thisFiles);
for (File f : middle) {
System.out.println("刪除檔案" + f.getAbsolutePath());
}
middle.clear();
middle.addAll(thisFiles);
middle.removeAll(lastFiles);
for (File f : middle) {
System.out.println("新增檔案" + f.getAbsolutePath());
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void readFile(File file) {
thisFiles.add(file);
if (file.isDirectory()) {
File[] listFiles = file.listFiles();
for (File f : listFiles) {
readFile(f);
}
}
}
}
- 下面一個測試類進行啟動
package com01;
import java.io.File;
import java.nio.file.NotDirectoryException;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
new FileMonitor().monitor(new File("D:\\測試"));
} catch (NotDirectoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 下面配上執行的截圖