学习java第十九天

学习java第十九天

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) 文件的路径

构造做的事:

  1. 实例化这个FileReader
  2. 把这个FileReader 对象指向要读文件的位置

FileReader 来读取字符文件,但还是转换为字节流开始读取,遇到如果是 GBK 格式, 因为GBK 里两个负数表示一个汉字,读取到两个负数之后再把其合拼起来,正数就直接显示为ASCII表的。
注意:FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream

使用 FileReader步骤:

  1. 实例化这个类
  2. 调用其read()方法
  3. 关闭资源

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 对象。

  1. 实例化这个FileWriter
  2. 如果这个文件不存在会创建文件
  3. 把 FileWriter 执行要写入文件位置

FileWriter类使用步骤:
实例化类
调用写的方法 (带缓冲区)
调用flush( );
关闭资源

字符不能读写图片以及视频原因:
字符流最终还是字节流进行读取 只是做了一个转换处理的功能,转换成ASCII码,UTF-8,GBK等,对视频图片处理就会出现图片视频丢位、 图片与视频打不开(图片打码不一样)

类 BufferedReader
从字符流读取文本,缓存各个字符,从而实现字符、数组、行的高效读取
构造方法摘要
BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
创建一个使用指定大小输入缓冲区的缓冲字符输入流。

特有方法:
public String readLine() 读取一行数据 返回值是读取的当前数据(String型)

使用类 BufferedReader来读取:

  1. 实例化 BufferedReader
  2. 调用 readLine()
  3. 关闭资源

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步骤 :

  1. 实例化OutputStreamWriter
  2. 调用其写的方法
  3. 关闭资源

序列化: 对象转换成字节序列保存在文件里
反序列化:字节序列转换成对象

类 ObjectOutputStream:对象流
把对象写到文件里面去
需要对象对应的类具有序列化接口的实现
构造:
public ObjectOutputStream(OutputStream out),需要一个OutputStream对象。可以使用该子类代替。
方法:
public final void writeObject(Object obj) 写的方法, 这个方法就是写一个对象
使用ObjectOutputStream步骤:

  1. 实例化ObjectOutputStream
  2. 调用写的方法
  3. 关闭资源
    注意:
    对象对应的类必须序列化:即实现序列化的接口(即implements Serializable)、唯一的表示符(static final long serialVersionUID = 12L;)

ObjectInutputStream类:对象流
把对象从文件里读取出来,是对ObjectOutputStream进行反序列操作。

构造:
ObjectInputStream(InputStream in)
方法:
读对象的方法:public final Object readObject();
步骤:

  1. 实例化ObjectInputStream
  2. 调用读的方法
  3. 关闭资源

总结:这个输入输出流,好多类,这么多相类似的方法,记得很乱,每次打代码时都是靠着代码提示混过的,还是要多捋捋思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值