BufferedReader和BufferedWriter读写文件(转载)
http://375940084.blog.51cto.com/2581965/751040
1.创建Student类存储每个学生信息,属性(学号,姓名,出生日期,得分)
2.从c:/test/student.txt文件中读取学生信息。如下:
学号,姓名,出生日期,得分
1,张三,1982-1-1,80
2,李四,1982-11-15,40
3,王五,1982-2-8,60
4,赵六,1982-7-5,70
5,小明,1981-12-21,70
6,李大嘴,1982-1-3,70
3.使用List存储6名学生的信息。
4.使用集合排序,将学生信息按时得分从高到低排序,得分相同时按照出生日期升序排序。
5.输出排序后的结果到c:/test/result.txt文件中,输出格式与输入格式相同,第一行是表头。
6.在代码中使用泛型,读文本文件使用BufferedReader,写文本文件使用BufferedWriter
解:
1.创建StudentInfo类,实现Comparable接口
- package com.test;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- public class StudentInfo implements Comparable<StudentInfo>
- {
- private String id; //学号
- private String name; //学生姓名
- private String birthday; //出生日期
- private String score; //分数
- public String getId()
- {
- return id;
- }
- public void setId(String id)
- {
- this.id = id;
- }
- public String getName()
- {
- return name;
- }
- public void setName(String name)
- {
- this.name = name;
- }
- public String getBirthday()
- {
- return birthday;
- }
- public void setBirthday(String birthday)
- {
- this.birthday = birthday;
- }
- public String getScore()
- {
- return score;
- }
- public void setScore(String score)
- {
- this.score = score;
- }
- /**
- *
- * {排序方法}
- *
- * @param objStu
- * @return
- * @author:LJ
- */
- public int compareTo(StudentInfo objStu)
- {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- //得分相同时按照出生日期升序排序
- if (this.score.equals(objStu.getScore()))
- {
- //格式化日期字符串
- Date date1 = null;
- try
- {
- date1 = dateFormat.parse(this.birthday);
- }
- catch (ParseException e1)
- {
- e1.printStackTrace();
- }
- Date date2 = null;
- try
- {
- date2 = dateFormat.parse(objStu.getBirthday());
- }
- catch (ParseException e2)
- {
- e2.printStackTrace();
- }
- //出生日期升序排序
- return date1.compareTo(date2);
- }
- //得分从高到低排序
- return objStu.getScore().compareTo(this.score);
- }
- }
2.读写文件类StudentFile.java
- package com.test;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- public class StudentFile
- {
- /**
- *
- * {根据路径读取学生文件信息}
- *
- * @param path
- * @return List<StudentInfo>
- * @throws Exception
- * @author:LJ
- */
- public List<StudentInfo> readFile(String path) throws Exception
- {
- List<StudentInfo> studentList = new ArrayList<StudentInfo>();
- BufferedReader br = null;
- try
- {
- br = new BufferedReader(new FileReader(path));
- String line = null;
- StudentInfo student = null;
- while ((line = br.readLine()) != null)
- {
- student = new StudentInfo();
- //将字符串分割成字符串数组
- String[] studentStr = line.split(",");
- student.setId(studentStr[0]);
- student.setName(studentStr[1]);
- student.setBirthday(studentStr[2]);
- student.setScore(studentStr[3]);
- studentList.add(student);
- }
- }
- catch (FileNotFoundException e)
- {
- throw new Exception("源文件未找到", e);
- }
- catch (IOException e)
- {
- throw new Exception("读文件异常.", e);
- }
- finally
- {//资源关闭
- if (br != null)
- {
- try
- {
- br.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- return studentList;
- }
- /**
- *
- * {将学生信息写入目标文件}
- *
- * @param studentList
- * @param dstPath
- * @throws Exception
- * @author:LJ
- */
- public void writeFile(List<StudentInfo> studentList, String dstPath) throws Exception
- {
- BufferedWriter bw = null;
- try
- {
- bw = new BufferedWriter(new FileWriter(dstPath));
- if (studentList != null && !studentList.isEmpty())
- {
- for(StudentInfo stu:studentList)
- {
- bw.write(stu.getId()+","+stu.getName()+","+stu.getBirthday()+","+stu.getScore());
- bw.newLine();//换行
- }
- }
- bw.flush();//强制输出缓冲区的内容,避免数据缓存,造成文件写入不完整的情况。
- }
- catch (IOException e)
- {
- throw new Exception("目标文件未找到", e);
- }
- finally
- { //资源关闭
- if (bw != null)
- {
- try
- {
- bw.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- }
- }
3.编写main方法
- package com.test;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- public class Test
- {
- /**
- * {main方法}
- *
- * @param args
- * @author:LJ
- * @throws Exception
- */
- public static void main(String[] args) throws Exception
- {
- String srcPath = "C:" + File.separator + "test" + File.separator + "student.txt";
- String dstPath = "C:" + File.separator + "test" + File.separator + "result.txt";
- //从源文件读取学生信息
- StudentFile fileStu = new StudentFile();
- List<StudentInfo> studentList = fileStu.readFile(srcPath);
- //临时数组,作排序用
- List<StudentInfo> tempList = new ArrayList<StudentInfo>();
- for (int i = studentList.size()-1; i > 0; i--)
- {
- //将学生信息存入临时数组,并从原数组中删除,行标题除外
- tempList.add(studentList.get(i));
- studentList.remove(i);
- }
- //对临时数组进行排序
- Collections.sort(tempList);
- for (int i=0,n = tempList.size(); i < n; i++)
- {
- //将排序后数组追加到原数组中
- studentList.add(tempList.get(i));
- }
- //将学生信息写入目标文件
- fileStu.writeFile(studentList, dstPath);
- }
- }
BufferedReader和BufferedWriter读写文件(转载)的更多相关文章
- BufferedReader、BufferedWriter读写文件乱码问题:
代码: text4500.txt文档用text打开(不知道格式): 读取会出现乱码,然后用Notepad++打开换成UTF-8格式的.就可以了
- BufferedReader与BufferedWriter读写中文乱码问题
正常读写英文时用""""没问题 FileReader fre = new FileReader("E:\\TEST\\readText.txt&quo ...
- [转载]FileStream读写文件
FileStream读写文件 FileStream类:操作字节的,可以操作任何的文件 StreamReader类和StreamWriter类:操作字符的,只能操作文本文件. 1.FileStream类 ...
- BufferedReader和BufferedWriter简介
BufferedReader和BufferedWriter简介 为了提高字符流读写的效率,引入了缓冲机制,进行字符批量的读写,提高了单个字符读写的效率.BufferedReader用于加快读取字符的速 ...
- java使用IO读写文件总结
每次用到IO的读写文件都老忘记写法,都要翻过往笔记,今天总结下,省的以后老忘.java读写文件的IO流分两大类,字节流和字符流,基类分别是字符:Reader和Writer:字节:InputStream ...
- JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)
1.流的简述及演示案例输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出.字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表. ...
- Java读写文件方法总结
Java读写文件方法总结 Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用Java的读写文件方法来处理数据方面的输入输出,确实很方便.奈何我的记性实在是叫人着急,很多时候既 ...
- Java读写文件的几种方式
自工作以后好久没有整理Java的基础知识了.趁有时间,整理一下Java文件操作的几种方式.无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外.Java读写文件一般是通过字节.字符和行 ...
- java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr
BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWri ...
随机推荐
- 被忽略却很有用的html标签
<base>标签 作用:标签为页面中所有链接指定默认链接地址或链接目标.有时候我们需要让首页的链接全部在新窗口中打开,我们一般会这样写链接,而使用这个标签就能一下搞定了! 属性:Href ...
- SaaS系列介绍之十五: SaaS知识重用
1 建立并积累自己的开发体系 遵行业界的规定又有自己的特色是我们所追求的目标.成功的软件公司都有丰富而可复用的代码组件,几行代码在单个系统里可能无足轻重,但一旦可在大量的系统中可重复使用那就是价值不菲 ...
- Python中itertools模块
itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. ch ...
- C# 对象与JSON串互相转换(转)
DoNet2.0 需要借助于Newtonsoft.Json.dll 代码 using System;using System.IO;using System.Text;using Newtonsoft ...
- WCF入门(九)--WCF实例管理
这组由Windows通讯基础(WCF)结合一组消息(客户端请求)服务实例所采用的技术被称为实例管理.一个完全由三种类型实例激活支持WCF,它们如下所述. 1.每个调用服务 每次调用服务是Windows ...
- JDK,JRE,JVM区别与联系
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...
- 深度分析Java的ClassLoader机制(源码级别)
写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoa ...
- 61. Rotate List
题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:Giv ...
- laravel Restful
参考:http://www.cnblogs.com/youxin/p/3967274.html http://scotch.io/tutorials/simple-laravel-crud-with- ...
- ios7 webapp touch bug
// ios7 touchstart bug if(navigator.userAgent.indexOf("iPhone OS 7") != -1){ var startX = ...