Java基础学习I/O系统---输入流和输出流

  在网上看到Java的I/O,心中想:以前学过吗?而且听说,这个东西对于从事Java行业的人来说有特别的重要。压抑不住一只小白(我)的心理,来了解一下Java的I/O。

我在网上随便找了一本书,来看一下Java对于I/O的处理。

这里主要讲的是输入流和输出流,输出流和输入流是相对于程序本身而言的。程序读取数据称为打开输入流,程序向其他源写入数据称为打开输出流。看图:

注:(大神忽略)开始我也不是特别明白这是什么意思,(以程序为主语)程序读进入程序的数据是输入流,程序向外输出数据即打开了输出流,输出流。

在java.io包中有各种I/O流类,这里按照输入输出流处理的 不 同 数 据 类 型 对流进行分类,即字符(Character)流和字节(Byte)流。

1.字符流(16bit):

在Java的I/O系统提供了InputStream和OutputStream两个抽象类实现字节(8位)数据的输入/输出。其中InputStream是输入流的抽象类,提供了read()方法,每个实现了该类的子类都要实现该方法。

输入流类:InputStream是一个抽象类,提供了抽象的read()方法。 输出流类:OutputStream 提供了write()方法,同样也是一个抽象类。

注:每个抽象类都有多个类继承,复写提供的方法,可以在api文档java.io中找到,节省篇幅,不予写出。

2.字节流(8bit):

字节流也分为读流数据类和写流数据类,即Reader类和Writer类及其子类。Writer类是字符(Character)流输出类的父类,它是抽象类,所有继承自该类的子类都必须实现抽象方法write(),具体的实现类中write()方法的使用可以参考相应的JavaDoc文档。这里为了区别InputStream和OutputStream使用了Reader和Writer,为了使读者习惯于使用Reader和Writer,并且中文中没有合适的词汇表达相应的流的概念,所以不再具体翻译为中文,使用时只要知道Reader类负责读流数据,而Writer类负责向流中写数据即可。

Write和Read都有多个类继承了他们。

a.Writer:继承自Writer类

BufferedWriter(带缓冲的Writer)

CharArrayWriter(字符数组Writer)

FilterWriter(带过滤器Writer)

PrintWriter(打印Writer)

PipedWriter(管道Writer)

StringWriter(字符串Writer)

OutputStreamWriter  (输出流Writer)   ,      FilerWriter(文件Writer)继承OutputStreamWriter 。


b.继承自Reader类

BufferedReader

CharArrayReader(字符数组Reader)

FileReader

InputerStreamReader

FiterReader

LineNumberReader(带行号Reader)

PipedReader

PushbackReader(推回Reader)

StringReader



接着在这说一下在网上看到的同时也解决了我的疑惑:

不管是磁盘还是网络传输,最小的存储单元都是字节,而不是字符,所以 I/O 操作的都是字节而不是字符,但是为啥有操作字符的 I/O 接口呢?这是因为我们的程序中通常操作的数据都是以字符形式,为了操作方便当然要提供一个直接写字符的 I/O 接口。


依据《Java:从入门到精通》这本书所写,有兴趣的可取看一下(大神无视就可以)

本人java初学者,肯定有写的不规范的地方还请指正( ⊙ o ⊙ )

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值