标签:
/** * 读取解析CSV文件,将读取结果输出的控制台上,并封装到4个Teacher对象中. * 1, 土鳖, 13101015338, 北京海淀区 2, 咪咪, 13201015338, 北京朝阳区 3, 小仓, 13601015818, 北京宣武区 4, 饭岛爱, 13201025818, 北京朝阳区 思路: 1.读取解析CSV文件,首先想到用BufferedReader高级流中的readLine方法.读取每一行文字. 2.BufferedReader依赖于转换流ISR和节点流FIS,因为是从文件读取一行文字,所以低级节点流为FileInputStream(file). 3.建立完流,用循环来使BufferedReader的readLine方法读取一行文字.因为readLine方法,一次读一行,读到末尾即返回null, 所以可以根据返回值的特点,用while,直到为null即停止循环.这样就可以读出文件里全部的语句 4.关键点: 1, 土鳖, 13101015338, 北京海淀区 读取到一行,这样的文字,可以用String类的split的方法分割逗号及空白. 分别获取一行的4个短字符串,再利用Teacher(String id,String name,String tel,String address)的构造方法,创建出1个Teacher对象. 循环,创建出4个对象.(这里可以用集合或者数组的容器存储对象). */ public class ReadCsv { public static void main(String[] args) { /*建立文件夹及文件对象*/ File dir = new File("."+File.separator+"src"+File.separator+"practise"+File.separator+"io"); if(!dir.exists()){ dir.mkdir(); } File file = new File(dir,"list2.csv"); /*创建一个方法,可以获取老师信息并存入Teacher对象的方法*/ List<Teacher> list = getCsvList(file); /*输出老师集合*/ System.out.println(list); /*输出第三个老师对象*/ System.out.println(list.get(2)); } public static List<Teacher> getCsvList(File file) { /*BufferedReader读取文件*/ BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(file)))); } catch (FileNotFoundException e) { System.out.println("文件未找到"); e.printStackTrace(); } /*循环读取*/ ArrayList<Teacher> list = new ArrayList<Teacher>(); /*字符串变量*/ String line = null; String[] strs = null; try { while( (line=in.readLine())!= null){ /*关键点: 分割得到4个元素的方法*/ strs = line.split(",\\s"); /*关键点: 把4个元素赋值给Teacher构造方法*/ list.add(new Teacher(strs[0],strs[1],strs[2],strs[3])); /*输出显示strs字符串数组显示每次循环readLine读取结果.*/ System.out.println(Arrays.toString(strs)); } } catch (IOException e1) { e1.printStackTrace(); } finally { try {/*关闭资源*/ if(in != null) in.close(); } catch (IOException e) { e.printStackTrace(); } } return list; } }
练习:读取解析CSV文件,将读取结果输出的控制台上,并封装到4个Teacher对象中.
标签:
原文地址:http://www.cnblogs.com/zyjcxc/p/5467139.html