13-2 IO流 ---- IO流原理及流的分类(2)分类概述

本文详细介绍了Java中的InputStream和Reader输入流家族,包括常用方法如read()、FileInputStream和FileReader的使用。同时阐述了OutputStream和Writer输出流,以及它们的flush()和close()方法的重要性。强调了必须显式关闭文件IO资源以防止资源泄露。

13-2 IO流 ---- IO流原理及流的分类(2)分类概述

一、InputStream & Reader

1.InputStream 和 Reader 是所有输入流的基类。
2.InputStream(典型实现:FileInputStream
(1)int read()
(2)int read(byte[] b)
(3)int read(byte[] b, int off, int len)
3.Reader(典型实现:FileReader)
(1)int read()
(2)int read(char [] c)
(3)int read(char [] c, int off, int len)
4.程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
5.FileInputStream 从文件系统中的某个文件中获得输入字节。FileInputStream 用于读取非文本数据之类的原始字节流。要读取字符流,需要使用 FileReader

二、InputStream
1.int read()
从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。
2. int read(byte[] b)
从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。否则以整数形式返回实际读取的字节数。
3. int read(byte[] b, int off,int len)
将输入流中最多 len 个数据字节读入 byte 数组。尝试读取 len 个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。如果因为流位于文件末尾而没有可用的字节,则返回值 -1。
4.public void close() throws IOException
关闭此输入流并释放与该流关联的所有系统资源。

三、Reader
1.int read()
读取单个字符。作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff)(2个字节的Unicode码),如果已到达流的末尾,则返回 -1
2.int read(char[] cbuf)
将字符读入数组。如果已到达流的末尾,则返回 -1。否则返回本次读取的字符数。
3.int read(char[] cbuf,int off,int len)
将字符读入数组的某一部分。存到数组cbuf中,从off处开始存储,最多读len个字符。如果已到达流的末尾,则返回 -1。否则返回本次读取的字符数。
4.public void close() throws IOException
关闭此输入流并释放与该流关联的所有系统资源。




四、OutputStream & Writer

1.OutputStream 和 Writer 也非常相似:
(1)void write(int b/int c);
(2)void write(byte[] b/char[] cbuf);
(3)void write(byte[] b/char[] buff, int off, int len);
(4)void flush();
(5)void close(); 需要先刷新,再关闭此流
2.因为字符流直接以字符作为操作单位,所以 Writer 可以用字符串来替换字符数组,即以 String 对象作为参数
(1)void write(String str);
(2)void write(String str, int off, int len);
3.FileOutputStream 从文件系统中的某个文件中获得输出字节。FileOutputStream 用于写出非文本数据之类的原始字节流。要写出字符流,需要使用 FileWriter

**五、OutputStream **
1.void write(int b)
将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。b 的 24 个高位将被忽略。 即写入0~255范围的。
2.void write(byte[] b)
将 b.length 个字节从指定的 byte 数组写入此输出流。write(b) 的常规协定是:应该与调用 write(b, 0, b.length) 的效果完全相同。
3.void write(byte[] b,int off,int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
4.public void flush()throws IOException
刷新此输出流并强制写出所有缓冲的输出字节,调用此方法指示应将这些字节立即写入它们预期的目标。
5.public void close() throws IOException
关闭此输出流并释放与该流关联的所有系统资源。

六、Writer
1.void write(int c)
写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。 即写入0 到 65535 之间的Unicode码。
2.void write(char[] cbuf)
写入字符数组。
3.void write(char[] cbuf,int off,int len)
写入字符数组的某一部分。从off开始,写入len个字符
4.void write(String str)
写入字符串。
5.void write(String str,int off,int len)
写入字符串的某一部分。
6.void flush()
刷新该流的缓冲,则立即将它们写入预期目标。
7.public void close() throws IOException
关闭此输出流并释放与该流关联的所有系统资源。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值