您的位置:首页 > Web前端

对于查询出来的数据用输出流写成文件BufferedWriter

2016-06-21 18:41 323 查看
//生成会计分录文件

     根据对账日期查询会计分录表, 然后将查询出来的数据有流生成文件。 主要是BufferedWriter流的使用

public void createFile(Date reconDate) throws IOException {
//1、生成scv文件
ReconFinanceEntryForQuery query = new ReconFinanceEntryForQuery();
query.setCrtDate(reconDate);

List<ReconFinanceEntryDto> reconFinanceEntryDtoList = reconFinanceEntryService.query(query);

if(CollectionUtils.isEmpty(reconFinanceEntryDtoList)){
log.info(MessageFormat.format("日期:{0} 无数据", DateUtils.format(reconDate)));

batchSaveEntryFileDto(null,null, null , null , MessageFormat.format("日期:{0} 无数据", DateUtils.format(reconDate)));

} else {
//让每个dto数据拼成字符串连接起来,放入集合中
List<String> content = new ArrayList<String>();
int count = 0;//记录数
//获取scv格式头部信息
String[] scvHeaders = new String[] { "accounting_date", "currency_code", "user_je_source_name","user_je_category_name",
"company_code", "dep_code", "account_code", "bank_code", "product_code", "entered_dr", "entered_cr", "conversion_date",
"conversion_rate_CONVERSION_RATE", "REFERENCE1", "REFERENCE4", "reference10(行描述)"
};
StringBuffer lineHeader = new StringBuffer("");
int i = 0;
for(String s : scvHeaders){
lineHeader.append(s);
if(i != scvHeaders.length-1){
lineHeader.append(charSplit);
}
i++;
}
content.add(lineHeader.toString());
for(ReconFinanceEntryDto dto : reconFinanceEntryDtoList){
StringBuffer line = new StringBuffer("");
line.append(leftMark);
if(dto.getPostDate() != null){
line.append(DateUtils.format(dto.getPostDate()));//accounting_date
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getCurrency() != null){
line.append(dto.getCurrency());//currency_code
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getUserJeSourceCode() != null){
line.append(dto.getUserJeSourceCode());//user_je_source_name
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getUserJeCategoryCode() != null){
line.append(dto.getUserJeCategoryCode());//user_je_category_name
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getCompanyCode() != null){
line.append(dto.getCompanyCode());//company_code
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getDeptCode() != null){
line.append(dto.getDeptCode());//dep_code
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getAccount() != null){
line.append(dto.getAccount());//acount_code
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getBankSegmentCode() != null){
line.append(dto.getBankSegmentCode());//bank_code
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getProductSegmentCode() != null){
line.append(dto.getProductSegmentCode());//product_code
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getDrAmt() != null){
line.append(dto.getDrAmt());//entered_dr
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
if(dto.getCrAmt() != null){
line.append(dto.getCrAmt());//entered_cr
}
line.append(rightMark);
line.append(charSplit);

line.append(leftMark);
line.append(rightMark);//十二列为空
line.append(charSplit);

line.append(leftMark);
line.append(rightMark);//十三列为空
line.append(charSplit);

line.append(leftMark);
line.append(rightMark);//十四列为空
line.append(charSplit);

line.append(leftMark);
line.append(rightMark);//十五列为空
line.append(charSplit);

line.append(leftMark);
line.append(dto.getSummary());
line.append(rightMark);//十六列为空

content.add(line.toString());
count++;//记录数增加
}
File fileCsv = new File(path+"//"+DateUtils.format(reconDate)+".csv");
String fileNameCsv = DateUtils.format(reconDate)+".scv";
createFile(content, fileCsv);//创建scv文件
File fileLog = new File(path+"//"+DateUtils.format(reconDate)+".log");
String fileNameLog = DateUtils.format(reconDate)+".log";
content.clear();
long length = fileCsv.length();
String cou = "records="+String.valueOf(count);
String leng = "filesize="+String.valueOf(length);
//构建log集合
content.add(leng);
content.add(cou);
createFile(content , fileLog);
String fileIdCsv = null;
String fileIdLog = null;
String failReason = null;
try {
fileIdCsv = uploadFile(fileCsv , fileNameCsv);
fileIdLog = uploadFile(fileLog , fileNameLog);
} catch (Exception e) {
log.error("上传文件失败",e);
failReason = "文件上传失败"+e.getMessage();
}

batchSaveEntryFileDto(fileIdCsv,fileNameCsv, fileIdLog , fileNameLog , failReason);
//生成文件、上传文件、保存数据库完毕,删除文件
deleteFile(fileCsv, fileLog);
}

}


//下面这个是调用生成文件的方法

private void createFile(List<String> content, File file) {
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
try {
//文件不存在即创建,存在即删除
if(!file.exists()){
file.createNewFile();
}else{
file.delete();
}
} catch (IOException e1) {
e1.printStackTrace();
}
FileOutputStream fw = null;
OutputStreamWriter ow = null;
BufferedWriter bw = null;
try {
fw = new FileOutputStream(file,true);
ow = new OutputStreamWriter(fw, Charset.forName("GBK"));
bw = new BufferedWriter(ow);
for(String line : content){
bw.write(line);
bw.newLine();
bw.flush();
}
} catch (Exception e) {
log.error("文件写入异常!",e);
}finally{
try {
if(bw != null){
bw.close();
}
if(ow != null){
ow.close();
}
if(fw != null){
fw.close();
}
} catch (IOException e) {
log.error("文件写入异常!",e);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: