天天看點

Java解析檔案内容

本文主要實作對.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}      

轉載于:https://blog.51cto.com/dwf07223/1562880