InputStream,OutputStream,Reader,Writer用法

本文详细介绍了Java中字节流(如InputStream和OutputStream)和字符流(如Reader和Writer)的区别,包括单字节或多字节读写、文件描述符管理以及如何处理打开文件时的清空问题,特别强调了try-catch结构在文件操作中的使用和追加写功能。

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

1、文件大体可以分为两大类

(1)、字节流:以字节为单位进行读写,一次最少读取一个字节(代表类InputStream输入,OutputStream输出)

(2)、字符流:以字符为单位,比如一个汉字3个字节,每次读写至少是3个字节(以一个汉字为单位不能一次读一半)(代表类Reader输入,writer输出)

2、InputStream,打开文件时,我们有个文件描述符表,记录当时我们都打开了哪些文件,我们打开操作完要记得close,如果不关闭,还一直打开,就会导致文件描述符表被耗尽(我们这里要用finally来写close因为,如果中间逻辑出现return或者抛出异常,close就执行不到了)while循环读取是为了确保文件能读取干净

我们可以简化成(try操作帮我们关闭文件不用在close)

(1)单个字节的读取

(2)一次读若干字节(读的更高效)

(3)指定从哪里读,读多长

3、OutputStream(再写之前会清空前面文件已有的内容,不是write引起的是打开操作引起的) 和上述InputStream一样

(1)为了解决打开文件清空前面内容,我们可以加一个true,之后写操作就变成追加了

(2)一次写一个

(3)一次写多个

(4)从哪里写写多长

4、Reader用法(和InputStream类似)这里我们一个汉字是三个字节,但是我们char是两个字节为什么可以读取字符,因为这个代码,相当于是把当前文件中的utf8再按照字符读取的时候,先转成unicode,每个char里存储对应的unicode值,基于unicode最终还可以构造回utf8的String

5、writer写操作和我们的OutputStream一样也有追加写这个操作需要注意

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值