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