本文主要实现对.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}