本文主要实现对.chk文件的解析,将其内容读出来,存入到一个Map中,文件内容实例为:
A0500220140828.CHK
A05002 |34622511 |373532879 |3
识别分隔符|,代码如下所示:
package com.src.factory; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.LinkedHashMap; import java.util.Map; import org.apache.log4j.Logger; public class ChkFileParseFactroy { static Logger logger = Logger.getLogger(ChkFileParseFactroy.class); /** * @Title: fileParsing * @Description: TODO(这里用一句话描述这个方法的作用) * @最后修改时间:Aug 14, 2014 11:02:26 AM * @param fileReader * @throws IOException 对方法的参数进行描述 * @return Map<String,String> 返回类型 */ public Map<String, String> fileParsing(File file) { if(file == null ){ return null; } Map<String, String> fileReadMap = new LinkedHashMap<String, String>(); String alineString = null; BufferedReader bufferedReader = null; FileReader fileReader = null; try { fileReader = new FileReader(file); bufferedReader = new BufferedReader(fileReader); alineString = bufferedReader.readLine(); //读取第一行数据 if (alineString != null) { //判断文件是否为空 String[] readArray = alineString.split("\\|"); //拆分读取的数据 if(readArray.length == 4){ //判断文件格式是否符合 fileReadMap.put("interNo", readArray[0].trim()); //Map第一个键存放接口号 fileReadMap.put("totalNum", readArray[1].trim()); //Map第二个键存放记录条数 fileReadMap.put("fileSize", readArray[2].trim()); //Map第三个键存放文件大小 fileReadMap.put("fileNum", readArray[3].trim()); //Map第四个键存放文件数 } else { logger.error("Error of File Format!"); } } else { logger.error("The File is Empty!"); } } catch (IOException e1) { e1.printStackTrace(); } finally { try{ if(null != bufferedReader) bufferedReader.close(); }catch(Exception e){ e.printStackTrace(); } try{ if(null != fileReader) fileReader.close(); }catch(Exception e){ e.printStackTrace(); } } return fileReadMap; } }
示例文件解析后显示为:
{interNo=A05002 , totalNum=34622511 , fileSize=373532879 , fileNum=3}