Java基础——IO类库

本文介绍了Java中的I/O类库,主要分为基于字节、基于字符的接口,以及字节与字符之间的转化。内容涵盖OutputStream、InputStream、Writer、Reader等基础I/O接口,并探讨了字符到字节的编码转换问题,以及如何将数据写入磁盘或网络。

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

纵览

Java的I/O操作类在包java.io下,大概有将近80个类,这些类大概可以分成如下四组。
基于字节操作的I/O接口:OutputStream和InputStream。
基于字符操作的I/O接口:Writer和Reader。
基于磁盘操作的I/O接口:File。
基于网络操作的I/O接口:Socket。

基于字节

在这里插入图片描述
在这里插入图片描述
这里说明两点:一是操作数据的方式是可以组合使用的;二是流最终写到什么地方必须要指定,要么是写到磁盘,要么是写到网络中,其实从上面的类图可以发现,写网络实际上也是写文件,只不过写网络还有一步需要处理,就是让底层操作系统再将数据传送到其他地方而不是本地磁盘。

基于字符

不管是磁盘还是网络传输,最小的存储单元都是字节而不是字符,所以I/O操作的都是字节而不是字符,但是为什么有操作字符的I/O接口呢?这是因为我们的程序中通常操作的数据都是字符形式的,为了操作方便当然要提供一个直接写字符的I/O接口,如此而已。我们知道字符到字节必须要经过编码转换,而这个编码又非常耗时,而且还会经常出现乱码问题,所以I/O的编码问题经常是让人头疼的问题。
在这里插入图片描述
在这里插入图片描述
不管是Writer类还是Reader类,它们都只定义了读取或写入的数据字符的方式,也就是怎么写或读,但是并没有规定数据要写到哪去,写到哪去就是我们后面要讨论的基于磁盘和网络的工作机制。

字节与字符的转化

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值