package cn.jeesoft.core.utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.concurrent.LinkedBlockingQueue;
/**
* 多线程文件写入帮助类
* @author king
*/
public class FileWriteHelper {
private File file;
private FileOutputStream out;
private static final LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>();
private Thread mThread;
private boolean isStop = false;
public FileWriteHelper(String file) throws FileNotFoundException {
this(new File(file));
}
public FileWriteHelper(File file) throws FileNotFoundException {
this.file = file;
this.out = new FileOutputStream(file, true);
}
public void start() {
mThread = new Thread() {
@Override
public void run() {
while (!isStop) {// 循环监听
try {
out.write('\n');
out.write(queue.take().getBytes());
} catch (Exception e) {
e.printStackTrace();
}
}
mThread = null;
file = null;
try {
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
out = null;
}
};
mThread.start();
}
public void stop() {
isStop = true;
}
public void append(String text) {
queue.add(text);
}
public File getFile() {
return file;
}
}