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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
关闭此输出流并释放与该流关联的所有系统资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YY鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值