字节流和字符流

字节流和字符流

字节流和字符流的操作方式几乎完全一样,区别只是操作的数据单元不同而已。字节流操作的数据单元是字节,字符流操作的数据单元是字符。
一、InputStream和Reader
InputStream和Reader是所有输入流的抽象基类,它们的方法是所有输入流都可使用的方法。
InputStream类的方法:
在这里插入图片描述

字节流转字符流:
在这里插入图片描述

InputStream和Reader的方法基本一致,只是InputStream读取的是字节,使用的参数是byte数组(byte[]),而Reader读取的是字符,使用的参数是char数组(char[])
InputStream和Reader都是抽象类,本身不能创建实例,但它们分别有一个用于读取文件的输入流:FileInputStream和 FileReader,它们都是节点流需要直接和指定文件关联。
二、OutputStream和Writer
OutputStream和Write是所有输出流的基类,它们的方法也是非常类似的,它们的方法是所有输出流都可使用的方法。
OutputStream类的方法:
在这里插入图片描述

Writer类的方法
在这里插入图片描述

RandomAccessFile类:
RandomAccessFile 读取(只读)
在这里插入图片描述

在文件最后追加
在这里插入图片描述

RandomAccessFile依然不能向文件的指定位置插入内容,如果直接将文件记录指针移动到中间某位置后开始输出,则新输出的内容会覆盖文件中原有的内容。如果需要向指定位置插入内容,
程序需要先把插入点后面的内容读入缓冲区,等把需要插入的数据写入文件后,再将缓冲区的内容追加到文件后面。
在这里插入图片描述

在指定位置插入字符串
在这里插入图片描述

### 字节流字符流的输入示例 在 Java 中,字节流字符流是处理文件读写的核心工具。以下分别展示字节流字符流的输入示例。 #### 1. 字节流输入示例 字节流通过 `InputStream` 及其子类(如 `FileInputStream`)实现从文件或其他数据源中读取字节数据。以下是一个使用 `FileInputStream` 读取文件内容的示例[^2]: ```java import java.io.FileInputStream; import java.io.IOException; public class ByteStreamExample { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("input.txt")) { int content; while ((content = fis.read()) != -1) { System.out.print((char) content); } } catch (IOException e) { e.printStackTrace(); } } } ``` 此代码片段展示了如何使用 `FileInputStream` 逐字节读取文件内容,并将其转换为字符输出[^5]。 #### 2. 字符流输入示例 字符流通过 `Reader` 及其子类(如 `FileReader` 或 `InputStreamReader`)实现从文件或其他数据源中读取字符数据。以下是一个使用 `InputStreamReader` 指定字符集编码的示例[^1]: ```java import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.IOException; public class CharStreamExample { public static void main(String[] args) { try (InputStreamReader reader = new InputStreamReader(new FileInputStream("input.txt"), "UTF-8")) { int content; while ((content = reader.read()) != -1) { System.out.print((char) content); } } catch (IOException e) { e.printStackTrace(); } } } ``` 此代码片段展示了如何使用 `InputStreamReader` 将字节流转换为字符流,并支持指定字符集编码(如 UTF-8 或 GBK)[^3]。 ### 总结 字节流字符流的主要区别在于它们处理的数据类型:字节流直接操作二进制数据,而字符流则以字符为单位进行操作,并支持指定字符集编码[^4]。上述示例分别演示了字节流字符流的基本输入操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值