📄 deletefilequeue.java
字号:
package com.datangmobile.oss.omc.pc;
import java.io.File;
import java.util.Iterator;
import java.util.LinkedList;
import com.datangmobile.oss.platform.util.ILogger;
import com.datangmobile.oss.platform.util.ModuleLogger;
public class DeleteFileQueue {
private static final ILogger log = ModuleLogger.getPmLogger()
.getOperLogger();
/**
* 在MDB中删除文件失败的文件队列(已经解析成功,需要删除的)
*/
private LinkedList<File> queue = new LinkedList<File>();
private static DeleteFileQueue instance = new DeleteFileQueue();
/**
* 单例类
*
* @return
*/
public static DeleteFileQueue getInstance() {
return instance;
}
/**
* 给队列增加在MDB中删除错误的文件(需要再次删除)
*
* @param fileInfo
*/
public void putDeleteFile(File file) {
synchronized (queue) {
if (!queue.contains(file)) {
queue.addLast(file);
}
}
}
/**
* 获取队列中所有的文件信息,并清空队列
*
* @return LinkedList<FileInfo>
*/
private LinkedList<File> pollAllFile() {
LinkedList<File> temp = new LinkedList<File>();
synchronized (queue) {
temp.addAll(queue);
queue.clear();
}
return temp;
}
/**
* 对文件队列中的文件逐个删除
*
*/
public void deleteFile() {
if (queue.size() == 0) {
return;
}
// 获取所有的FileInfo
LinkedList<File> infoList = pollAllFile();
Iterator<File> itr = infoList.iterator();
while (itr.hasNext()) {
File file = itr.next();
if (file == null) {
continue;
}
if (!file.exists()) {
/* 文件已不存在 */
log.info(DeleteFileQueue.class, new StringBuilder().append(
"删除本地性能数据文件时,文件已经不存在! ").append(file.getAbsoluteFile())
.toString());
continue;
}
if (!file.delete()) {
/* 如果删除失败,则加入到队列后,继续删除 */
log.error(DeleteFileQueue.class, new StringBuilder().append(
"删除本地性能数据文件失败,将发如删除队列中重新删除! ").append(
file.getAbsoluteFile()).toString());
// 重新加入队列的头部
putDeleteFile(file);
} else {
/* 删除成功 */
log.info(DeleteFileQueue.class, new StringBuilder().append(
"删除本地性能数据文件成功! ").append(file.getAbsoluteFile())
.toString());
}
}
infoList.clear();
}
// public static void main(String[] args) {
// for (int i = 0; i < 10; i++) {
// File file = new File("" + i);
// putDeleteFile(file);
// }
// LinkedList<File> tempList = pollAllFile();
// Iterator<File> itr = tempList.iterator();
// while (itr.hasNext()) {
// File file = itr.next();
// System.out.println(file.getPath());
// }
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -