标签:
数据文件的格式:第一行是字段名称,用“|”分隔,第二行开始是数据,也用“|”分隔,如下图所示
解析分装到集合的代码如下:
package com.ultra.aliyun.control.main; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class Test { public static void main(String[] args) { String filePath = "D:\\aliyun_dataFile\\SURF_WEA_CHN_MUL_HOR_TAB-I-2.txt"; List<HashMap<String, String>> list = readTxtFile2(filePath); System.out.println(list.size()); for (int i = 0; i < list.size(); i++) { System.out.println("第i条记录"+i+":"+list.get(i)); } } public static List<HashMap<String, String>> readTxtFile2(String filePath){ //定义存储读取到的数据记录的集合 List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); try { String encoding="UTF-8"; File file=new File(filePath); //判断文件是否存在 if(file.isFile() && file.exists()){ //考虑到编码格式 InputStreamReader read = new InputStreamReader(new FileInputStream(file),encoding); BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; //记录读取的数据文件的行数 int count = 0; //定义字段的数组 String[] fields = null; //定义每条记录取出的字段值数组 String[] fieldValue = null; //定义Map集合 HashMap<String, String> map = new HashMap<String, String>(); while((lineTxt = bufferedReader.readLine()) != null){ map = new HashMap<String, String>(); if(count == 0) { fields = lineTxt.split("\\|"); System.out.println("fields:"+fields); }else { fieldValue = lineTxt.split("\\|"); //System.out.println("fieldValue:"+fieldValue); for(int i = 0; i < fields.length; i++) { for (int j = 0; j < fieldValue.length; j++) { if(i == j) { map.put(fields[i], fieldValue[j]); } } } //将读取的每一行的记录存入到list集合中 list.add(map); } count ++; } read.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } return list; } }
标签:
原文地址:http://my.oschina.net/bigdataer/blog/510994