Java学习里程-----Java基础_23 Java IO 流(一)

(今天又是元气满满的一天,公司大小周上班,不巧的是,今天是小周,so,我现在在办公室继续上班,不忙的时候,我给大家更新博客。)

Java 的 io 可以说是Java中的一个大石头,很少能有人搬起来,抬走。原因很简单,这个东西学不好就这样,一旦涉及到文件操作,就头大,我希望大家看完我的这几篇连载博客,能够有所感悟,废话不多说,开刚!

一、IO

我们先来认识一下IO,什么是IO

IO,这俩字母需要分看看,I(这是“爱”!不是数字1 也不是L !!!)代表的单词是input,翻译过来是输入,O(这是字母“欧”,不是数字0)代表的单词是Output,翻译过来是输出,这俩字母合起来就是输入输出。

知道了什么是IO,我就可以继续说Java了,Java中将IO抽象了一下,并且给定义了一个名字,流。

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出-------《百度百科-IO流》

大家详细请看百度百科,这个比较权威。

我自身的理解,流就类似一个通道,数据到了通道口,开始进行转换,转换成能进入通道口的样子,然后顺着通道进行流动,然后出来通道的时候,再进行反转换,转换回去。

二、输入流、输出流

有了流之后,还不行,我们还得划分,你给我,对于你来说是输出,对于我来说是输入。所以人们还给流定义了方向。

当然,上面说的只是一个比喻,我们实际上可以用计算机来说输入流输出流

输入流:输入流是相对程序而言的,外部传入数据给程序需要借助输入流。就像你从计算机硬盘上读取文件,相对于你来说,这是输入,因为你得到了文件

输出流:输出流是相对程序而言的,程序把数据传输到外部需要借助输出流。这就像你写了一个word,然后存到硬盘上。这就是输出。

要好好理解这里,有点绕,我给大家画个图,大家可能更明白。

好吧,我属实画不出来,所以从网上搂了一个图得了

三、字节流 字符流

说完流动方向之后,然后就是流动的内容了。

在说这个之前,我们先来说一下字节和字符这两个东西

字节:Byte

字符:Character

一个字节 等于 8bit(bit是存储信息的最小单位)

一个字符 等于 2个字节 等于 16个bit

这么看说明 一个字符 要比 一字节大 两倍,知道了这个我们继续看

Java将文件进行解析,拆分,按照拆分的情况,一个拆到字节就不往下拆分了,一个拆到字符就也不拆分了。

所以,Java还按照这两种拆分情况,将流划分成两种一个是字节流,一个是字符流。

以上都为你记忆字节流和字符流不同,我用另外的一个思想和你说的,但实际情况如下:

原本其实没有字符流,只有字节流,主要是用在处理二进制数据,而它处理是按照字节来进行处理的。

但是实际上来说,我们一般用到的数据都是文本,这才提出字符流的概念,这个是使用Unicode编码,字节流是采用的ASCll编码。

加粗的一定要记住!!!!

四、字节流和字符流的区别

区别1:他俩基本单位不一样,一个大一个小,看上面就知道

区别2:字节和字符 这俩流处理的对象不同,字符主要是处理文本,字节是啥都行。

区别3:(我们后面会讲)字符流按照字符进行读取数据,一次读取两个字节,返回了这两个字节所对应的int类型的值(其实这个值就是编码)。写入文件时把这两个字节的内容解码成这个字符在Unicode码下对应的二进制数据写入。也就是说,读取的时候,按照字符形式读取出来二进制数据,然后,再以二进制写入。咋进咋出。

字节流和字符流类似,但是人家是按照一个一个字节进行读取,咋读咋写。

扩展:你要是用字符流去读取图片,然后再用字符流去存,我和你说,要是能打开存好的图片,我吃屎!(原因:人家图片是按照字节去存储的,你用字符流形式先读再存,最后能看才有了鬼,读就读错了)

区别4:看图说话

好吧,没有图,我就用嘴说,字符流中用了缓冲,而字节流并没有使用缓冲,问题来了,用缓冲好呢,还是不用缓冲好呢?

答案在后几篇博客中,自己去翻着看吧。

五、IO流大家族

是的,你没有看错啊,很多。。。

我是一下子记不住那么多,我只记住一些常用的,不常用的需要现查

大家可以打开Overview (Java Platform SE 8 ) Java Api 开发文档,一边看一边熟悉,可以自己找个本子,纸张画一下继承啊啥的结构。

下一节内容,先来学习一下字节流!我们先学字节流,字符流排在字节流后面说

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

他 他 = new 他()

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

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

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

打赏作者

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

抵扣说明:

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

余额充值