在上海乐字节学习的第十九天(持续更新中)

155 阅读4分钟

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" (换行) 使用基本步骤: 4. 实例化 BufferedWriter 5. 调用其write() 6. 关闭资源

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 调用读的方法 关闭资源 总结:这个输入输出流,好多类,这么多相类似的方法,记得很乱,每次打代码时都是靠着代码提示混过的,还是要多捋捋思路。---