一、四个顶级抽象类
1 InputStream
1.1常用子类
FileInputStream 文件输入字节流
ObjectInputStream 对象输入流
ByteArrayInputStream字节数组输入流
1.2 带缓冲的流
BufferedInputStream
用法:
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(sourcePath)); |
2 OutputStream
2.1 常用子类
FileOutputStream 文件输出流
ObjectOutputStream 对象输出流
ByteArrayOutputStream 字节数组输出流
2.2 带缓冲的流
BufferedOutputStream
用法:
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(target),1024*1024); |
3 Reader
3.1 常见子类
BufferedReader
InputStreamReader
StringReader
3.2 固定用法
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(sourcePath), "utf-8")); |
4 Writer
4.1 常见子类
BufferedWriter
CharArrayWriter
OutputStreamWriter
PrintWriter
StringWriter
4.2 用法二选一
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(target,true),"utf-8")); |
Or
BufferedWriter printWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(target,true),"utf-8")); |
二、有关练习(计算成绩表中每个人的平均成绩)
2.1 新建一个成绩表grade.txt
2.2 通过文件流读取文件数据
package FileStore;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
* @Auther: Administrator
* @Date: 2019/3/4
* @Description: 计算平均成绩测试类
* @version: 1.0
*/
public class Grade {
public static void main(String[] args) {
String source = "C:\\Users\\num11\\Desktop\\grade.txt";
try {
readFile(source);
} catch (Exception e) {
e.printStackTrace();
}
}
/**读取文件内容
* @param source
*/
public static void readFile(String source) throws Exception{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(source),"gbk"));
String line = bufferedReader.readLine();//除去第一行
while ((line = bufferedReader.readLine())!=null){
//处理每行的数据,并封装成对象
Student student = doLine(line);
System.out.println(student.getSname()+"的平均成绩是:"+student.avgGrade());
}
if(bufferedReader!= null){
bufferedReader.close();
}
}
public static Student doLine(String line){
String[] strs = line.split("\\s+");
//简单的封装对象
Student student = new Student();
student.setSno(strs[0]);
student.setSname(strs[1]);
student.setYuwen(Integer.valueOf(strs[2]));
student.setShuxue(Integer.valueOf(strs[3]));
student.setEnglish(Integer.valueOf(strs[4]));
return student;
}
}
Student对象
package FileStore;
/**
* @Auther: Administrator
* @Date: 2019/3/4
* @Description: FileStore
* @version: 1.0
*/
public class Student {
private String sno;
private String sname;
private int yuwen;
private int shuxue;
private int english;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getYuwen() {
return yuwen;
}
public void setYuwen(int yuwen) {
this.yuwen = yuwen;
}
public int getShuxue() {
return shuxue;
}
public void setShuxue(int shuxue) {
this.shuxue = shuxue;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
public int avgGrade(){
return (this.yuwen+this.shuxue+this.english)/3;
}
}