import java.io.File;
import java.io.FileFilter;
import java.util.Hashtable;
import java.util.Map;
public class PictureFileListener {
/**
* 问题文件列表
*/
private static Map<String, File> problemFileMap = new Hashtable<String, File>();
/**
* 监听文件路径
*/
File listenDirectory = new File("C:\\picture");
/**
* 测试
*
* @param args
*/
public static void main(String[] args) {
// 图片文件夹监听线程
new Thread(new Runnable() {
public void run() {
// 监听路径
File listenDirectory = new File("C:\\picture");
if (!listenDirectory.exists() || !listenDirectory.isDirectory()) {
listenDirectory.mkdirs();
}
// 备份路径
File bakDirectory = new File("C:\\picture_bak");
if (!bakDirectory.exists() || !bakDirectory.isDirectory()) {
bakDirectory.mkdirs();
}
while (true) {
if (listenDirectory != null && listenDirectory.exists() && listenDirectory.isDirectory()) {
File[] pictureFiles = listenDirectory.listFiles(new FileFilter() {
public boolean accept(File file) {
if (!file.isFile() || file.getAbsolutePath().lastIndexOf(".jpg") == -1) {
return false;
}
return true;
}
});
if (pictureFiles != null) {
for (File currentFile : pictureFiles) {
boolean renameSuccess = currentFile.renameTo(new File(bakDirectory + File.separator + currentFile.getName()));
if (!renameSuccess) {
PictureFileListener.problemFileMap.put(currentFile.getAbsolutePath(), currentFile);
}
}
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
如果让线程While(true)的话,就会吃掉一个CPU(机器是双核4线程的,CPU占用25%,正好吃掉了一个CPU线程)
所以加入Thread.sleep(microsecond)来设置当前线程休眠多久,这样CPU去执行线程休眠就不会一直占用了