Reader :用于读取字符流的抽象类
公有的方法:
int read() 读取单个字符。 返回的是单个字符(int型)。
int read(char[ ] cbuf) 将字符读入数组。 返回的是读取字符的有效个数。
int read(char[ ] cbuf, int off, int len) 指定数组读取的范围。
类 FileReader:用来读取字符文件的便捷类。reader的子类。
构造方法:
public FileReader(File file) 文件流的名称
public FileReader(String fileName) 文件的路径
构造做的事:
实例化这个FileReader
把这个FileReader 对象指向要读文件的位置
FileReader 来读取字符文件,但还是转换为字节流开始读取,遇到如果是 GBK 格式, 因为GBK 里两个负数表示一个汉字,读取到两个负数之后再把其合拼起来,正数就直接显示为ASCII表的。
注意:FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream
使用 FileReader步骤:
实例化这个类
调用其read()方法
关闭资源
Writer:写入字符流的抽象类
常规的方法:
abstract void close() 关闭此流,但要先刷新它。
abstract void flush() 刷新该流的缓冲。
void write(char[] cbuf) 写入字符数组。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分。
void write(int c) 写入单个字符。
void write(String str) 写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分。
FileWriter:类 OutputStreamWriter的子类
用于写入字符文件的便捷类
构造方法摘要
FileWriter(File file) 根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。
实例化这个FileWriter
如果这个文件不存在会创建文件
把 FileWriter 执行要写入文件位置
FileWriter类使用步骤:
实例化类
调用写的方法 (带缓冲区)
调用flush( );
关闭资源
字符不能读写图片以及视频原因:
字符流最终还是字节流进行读取 只是做了一个转换处理的功能,转换成ASCII码,UTF-8,GBK等,对视频图片处理就会出现图片视频丢位、 图片与视频打不开(图片打码不一样)
类 BufferedReader
从字符流读取文本,缓存各个字符,从而实现字符、数组、行的高效读取
构造方法摘要
BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
创建一个使用指定大小输入缓冲区的缓冲字符输入流。
特有方法:
public String readLine() 读取一行数据 返回值是读取的当前数据(String型)
使用类 BufferedReader来读取:
实例化 BufferedReader
调用 readLine()
关闭资源
BufferedWriter:
public class BufferedWriter extends Writer将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
构造方法摘要
BufferedWriter(Writer out) \一个writer对象
创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)
创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
常规方法:
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(int c)
写入单个字符。
void write(String s, int off, int len)
写入字符串的某一部分。
独有的方法:
public void newLine() 等同于"\r\n" (换行)
使用基本步骤:
- 实例化 BufferedWriter
- 调用其write()
- 关闭资源
InputStreamReader:功能:字节流转换为字符流
api建议:为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader
构造方法: public InputStreamReader(InputStream in,Charset cs)
第一个参数是一个 InputStream
第二个参数传递的是要设置的编码格式
常规的方法:read();
OutputStreamWriter:功能:字符流通向字节流
构造方法: public OutputStreamWriter(OutputStream out,Charset cs)
第一个参数是: 输出流对象 , 第二个:设置编码格式
常规的方法:write()
使用OutputStreamWriter步骤 :
实例化OutputStreamWriter
调用其写的方法
关闭资源
序列化: 对象转换成字节序列保存在文件里
反序列化:字节序列转换成对象
类 ObjectOutputStream:对象流
把对象写到文件里面去
需要对象对应的类具有序列化接口的实现
构造:
public ObjectOutputStream(OutputStream out),需要一个OutputStream对象。可以使用该子类代替。
方法:
public final void writeObject(Object obj) 写的方法, 这个方法就是写一个对象
使用ObjectOutputStream步骤:
实例化ObjectOutputStream
调用写的方法
关闭资源
注意:
对象对应的类必须序列化:即实现序列化的接口(即implements Serializable)、唯一的表示符(static final long serialVersionUID = 12L;)
ObjectInutputStream类:对象流
把对象从文件里读取出来,是对ObjectOutputStream进行反序列操作。
构造:
ObjectInputStream(InputStream in)
方法:
读对象的方法:public final Object readObject();
步骤:
实例化ObjectInputStream
调用读的方法
关闭资源
总结:这个输入输出流,好多类,这么多相类似的方法,记得很乱,每次打代码时都是靠着代码提示混过的,还是要多捋捋思路。