java-i o技术,Java I/O 技术(一)—— 概述

首先我们必须得明白,Java中IO技术的出现是为了解决什么问题?

在这之前,我们与程序的交互方式都是通过在控制台输入,或在程序中写死了数据,来确保程序运行时所需要的数据的有效性。

然而,在现实中,并非如此。

例如,我们需要对硬盘上的一个文件进行操作(文本文件 or  音频 or 视频文件) 或者是将 程序运算后所得到的结果保存到硬盘上或者是 从网络上读取数据,将网络上的数据保存到我们自己的电脑上或者是 将我们电脑里的东西 上传到网上 等等 诸如此类的情况。那么,之前的程序就无能为力了,在Java中的 输入输出流技术为了解决这个问题,应运而生。

首先我们先来搞清楚两个概念:

1.      什么是流?

a)        流是在计算机的输入,输出操作中流动的数据序列。

2.      什么是输入流 or 输出流?

a)        输入流,代表从外设流入计算机的数据序列。它是从键盘,磁盘文件流向内存而后被程序使用的数据流,为程序提供输入信息。

b)       输出流,代表从计算机流向外设的数据序列。从程序流向显示器,打印机,磁盘文件的数据流,实现程序的输出功能。

3.      流式输入,输出的特点是:

数据的获取和发送均按照数据序列的顺序进行,每一个数据都必须等待排在它前面的数据读入或送出之后才能被读写,每次操作处理的都是序列中剩余的未读写数据的第一个,而不能随意选择输入输出的位置。序列中的数据既可以是未经加工的原始二进制数据,也可以是按照一定编码处理后符合某种格式规定的特定数据(如,字符数据)

而,Java的I/O 技术正是,一种流式技术。它一共分为两种:

1.      字节流 —— 用于操作原始的二进制数据。(如音频,视频,等等)

2.      字符流 —— 用于操作经过编码表处理后字节数据。只能用来进行文字的处理。

字符流的由来:

先从ASCII说起,ASCII里面记录的全是老美使用的文字和 数字之间的对应关系。为了让计算机能够识别中文,因此我们造了这样的一张码表叫做:GB2312 or GBK 。

同样的其他国家也在建立自己的文字和数字的对应关系。

但是计算机却是统一的,那么该如何让计算机识别各个国家的文字呢?为了解决这个问题,国际化标准组织,就建立一张码表——Unicode 。 它能够识别各个国家的文字,Java底层使用的就是这张码表。于是,能识别中文的 码表 就有两种—— GBK 和 Unicode。

举例来说,“你好”在 GBK中有对应的数字,当然了在Unicode中也有对应的数字。但是两张码表中表示同样的文字——“你好”时,使用的数字却是不一样的。如果用GBK来封装,用Unicode来解析,就会发生错误。

然而,流是处理数据的,中文作为一种数据,如果这种数据是通过GBK编制后产生的,当这种数据 被 Unicode解析后,就会出问题。为了处理文字方便,就有了字符流——其实质是:将字节流和编码表进行了封装!专门用来处理文字数据的技术。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值