一、Reader类
1、Reader类常用方法
int read( )
int read(char[] c)
read(char[] c,int off,int len)
void close( )
2、子类InputStreamReader常用的构造方法
InputStreamReader(InputStream in)
InputStreamReader(InputStream in,String charsetName)
3、FileReader类
FileReader类是InputStreamReader的子类
- FileReader(File file)
- FileReader(String name)
该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型
- System.out.println(System.getProperty(“file.encoding”)); 获得本地平台的字符编码类型
4、使用FileReader读取文件
与字节流FileInputStream类实现文本文件读取步骤类似
引入相关的类
import java.io.Reader;
import java.io.FileReader;
import java.io.IOExceprion;
创建FileReader对象
Reader fr= new FileReader("D:\\myDoc\\简介.txt");
读取文本文件的数据
fr.read();
关闭相关的流对象
fr.close();
5、BufferedReader类
使用FileReader类与BufferedReader类可以提高字符流读取文本文件的效率
- BufferedReader类是Reader类的子类
- BufferedReader类带有缓冲区
- 按行读取内容的readLine()方法
BufferedReader常用的构造方法
- BufferedReader(Reader in)
子类BufferedReader特有的方法
- readLine()
6、使用 BufferedReader读文本文件
引入相关类
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
构造BufferedReader 对象和FileReader 对象
Reader fr = new FileReader("C:\\myTest.txt ");
BufferedReader br = new BufferedReader(fr);
调用readLine() 方法读取数据
br.readLine();
关闭文件流对象
br.close();
fr.close();
二、Writer类
1、Writer类常用方法
write(String str)
write(String str,int off,int len)
void close()
void flush()
2、子类OutputStreamWriter常用的构造方法
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out,String charsetName)
3、FileWriter类
FileWriter类是OutputStreamWriter的子类
- FileWriter (File file)
- FileWriter (String name)
该类只能按照本地平台的字符编码来写数据,用户不能指定其他的字符编码类型
4、使用FileWriter写文件
与字节流FileOutputStream类实现向文本文件写入数据步骤类似
引入相关的类
import java.io.Reader;
import java.io.FileWriter;
import java.io.IOException;
创建FileReader对象
Writer fw= new FileWriter("D:\\myDoc\\简介.txt");
写文本文件
fw.write();
关闭相关的流对象
fw.close();
5、BufferedWriter类
使用FileWriter类与BufferedWriter类 可与提高字符流写文本文件的效率
- BufferedWriter类是Writer类的子类
- BufferedWriter类带有缓冲区
BufferedWriter常用的构造方法
- BufferedWriter(Writer out)
6、使用 BufferedWriter写文件
引入相关的类
import java.io.FileWriter ;
import java.io.BufferedWriter ;
import java.io.IOException;
构造BufferedWriter 对象和FileWriter 对象
FileWriter fw = new FileWriter("C:\\myTest.txt");
BufferedWriter bw = new BufferedWriter(fw);
调用write()方法写数据
bw.write("hello");
流对象的清空和关闭flush()和close()
bw.flush();
fw.close();
三、读写二进制文件
1、DataInputStream类
FileInputStream的子类与FileInputStream类结合使用读取二进制文件
2、DataOutputStream类
FileOutputStream的子类与FileOutputStream类结合使用写二进制文件
3、使用 DataInputStream 读二进制文件
引入相关的类
import java.io.FileInputStream;
import java.io.DataInputStream;
构造数据输入流对象
FileInputStream fis = new FileInputStream("C:\\HelloWorld.class");
DataInputStream dis = new DataInputStream(fis);
调用read()方法读取二进制数据
dis.read();
关闭数据输入流
dis.close();
4、使用 DataOutputStream写二进制文件
引入相关的类
import java.io.FileOutputStream;
import java.io.DataOutputStream;
构造数据输入流对象
FileOutputStream outFile = new FileOutputStream("C:\\temp.class");
DataOutputStream out = new DataOutputStream(outFile);
调用read ()方法读取二进制数据
out.read();
关闭数据输入流
out.close();
四、序列化和反序列化
1、简介
序列化是将对象的状态写入到特定的流中的过程
反序列化则是从特定的流中获取数据重新构建对象的过程
2、实现序列化
使用集合保存对象,可以将集合中的所有对象序列化
3、实现反序列化
如果向文件中使用序列化机制写入多个对象,那么反序列化恢复对象时,必须按照写入的顺序读取
五、总结
1、BufferedReader和BufferedWriter读写文本文件的优势
使用FileWriter类与BufferedWriter类 可与提高字符流写文本文件的效率
使用FileReader类与BufferedReader类可以提高字符流读取文本文件的效率
2、复制二进制文件使用的流
使用 DataInputStream 读二进制文件
使用 DataOutputStream写二进制文件