20220803学习内容 IO基础 三 字符流

在顶层有 Reader Writer 两个抽象类。 Reader Writer 中定义了 read() write() 方法,它们被派生流类 重载
Reader 抽象类的定义
public abstract class Reader implements Readable , Closeable {
//BIO ,读取一个有效的字符,返回值为 0 65535 的整数,如果到达流的末尾则返回 -1
public int read () throws IOException
//BIO, 读取字符存储到 char 数组中,返回读取的字符个数,流结束则返回 -1
public int read ( char cbuf []) throws IOException
// 关闭流,同时释放资源
abstract public void close () throws IOException ;
Writer 抽象类的定义
public abstract class Writer implements Appendable , Closeable , Flushable {
// 写出一个字符到字符流,要写的字符包含在给定整数值的 16 个低位; 16 个高位被忽略。
public void write ( int c ) throws IOException
// 将字符数组中的指定部分内容压入到字符流,从 off 开始共 len 个字符
abstract public void write ( char cbuf [], int off , int len ) throws
IOException ;
/ 关闭流,同时释放资源
abstract public void close () throws IOException ;

相关的子类:

InputStreamReader OutputStreamWriter 桥接流,用于自动实现字节流和字符流的转换
FileReader FileWriter 文件流,用于实现针对文本文件的读写操作
CharArrayReader CharArrayWriter 内存流,用于实现针对 char 数组的读写操作
PipedReader PipedWriter 管道流,用于线程之间的通讯
FilterReader FilterWriter 过滤流的父类
BufferedReader BufferedWriter 缓存流,用于在流中添加缓冲区
StringReader StringWriter 内存流,用于实现针对字符串的读写操作
一  字符流 Reader:
int read() 读取一个字符并以整数的形式返回 0-65535 ,如果返回 -1 则已到输入流末尾
int read(char[] cbuf) 读取一系列字符并存储到一个数组中,返回实际读取的字符数,如果读到输入
流末尾则返回 -1
void close() 关闭输入流并释放内存资源
int read(char[] cbuf, int off, int len) 读取 len 个字符并存储到一个数组中,从 off 位置开始,返回实
际读取的字符数,如果读取到输入流末尾则返回 -1
long skip(long n) 跳过 n 个字符不读,返回实际跳过的字节数
二   字符流 Writer:
void write(int c) 将字符( int 数组的低 8 位)压入到字符流中
void write(char[] cbuf, int off, int len) 将字符数组中的指定部分内容压入到字符流中,从 off 开始共
len 个字符
void write(String str) 将字符串中的内容压入到字符流中
void close() 关闭流并释放所占用的资源
void write(String str, int off, int len) 将字符串中的指定部分内容压入到字符流中,从下标 off 开始
len 个字符
void flush() 刷新缓冲区,将缓冲区中的数据全部送出到目标地,然后清空缓冲区
void write(char[] cbuf) 将字符数组中的所有数据压入到字符流中
一般来说:一次读写一个字符效率太低,可以引入 char[] 数组提高执行效率
小结
在学些 BIO 时记忆父类的方法,区分子类的实现不同
        InputStream中的方法 read(byte[]):int Reader 中方法 read(char[]):int 如果到达流末尾
-1
        OutputStream中的方法 write(byte[],0,len):void Writer 中的方法
write(char[],0,len)/write(String)
一般在使用中,如果读取数据使用字节流,则写出数据采用的也是字节流;不建议混用,除非引入
桥接流
文件流
        FileInputStream("file-name") FileInputStream(File) FileNotFoundException
        FileReader("file-name") FileReader(File) FileNotFoundException
        FileOutputStream("file-name") FileOutputStream("file-name",true) 默认文件覆盖,如果
参数 true 表示追加
        FileWriter("file-name") FileWriter("file-name",true)
        一般不使用单字节或者单字符的操作方法,使用数组
注意: try(){} 是推荐写法,否则应该使用 try{}finally{} 结构保证流的关闭
针对二进制文件不建议使用字符流,建议使用字节流进行操作,否则有可能拷贝文件出现问题:
如果针对文本文件则建议使用字符流,因为编码使用比较方便
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值