package xxx;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import com.xxx.common.logging.Logger;
import com.xxx.common.logging.LoggerFactory;
/**
* 文件模板工具类
*
* @author xu.le
* @version $Id: FileTemplate.java,v 0.1 2010-9-8 上午10:38:23 xu.le Exp $
*/
public class FileTemplate {
private static final Logger logger = LoggerFactory.getLogger(FileTemplate.class);
/**
*
*
* @param buffer
* @param baseDir
* @param fileName
*/
public static void upload(final byte[] buffer, final String baseDir, final String fileName) {
executeTemplate(new CallBack() {
public OutputStream callBack() {
File file = new File(baseDir, fileName);
File parent = file.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
if (logger.isInfoEnabled()) {
logger.info("尝试创建目录:");
}
}
if (!file.exists()) {
OutputStream out = null;
try {
out = new FileOutputStream(file);
out.write(buffer);
} catch (FileNotFoundException e) {
if (logger.isInfoEnabled()) {
logger.info("文件无法找到异常", e);
}
} catch (IOException e) {
if (logger.isInfoEnabled()) {
logger.info("文件写入异常", e);
}
} catch (Exception e) {
e.printStackTrace();
}
return out;
}
if (logger.isInfoEnabled()) {
logger.info("文件已经存在,不重新生成,文件为" + file);
}
return null;
}
});
}
/**
*
* @param callBack
*/
private static void executeTemplate(CallBack callBack) {
OutputStream out = callBack.callBack();
if (out != null) {
try {
out.close();
} catch (IOException e) {
if (logger.isInfoEnabled()) {
logger.info("OutputStream close error!", e);
}
}
}
}
/**
*
* @author xu.le
* @version $Id: CallBack.java,v 0.1 2010-9-8 上午10:41:50 xu.le Exp $
*/
private interface CallBack {
public OutputStream callBack();
}
}