Java输入输出(IO)和流的基本概念

    |     2015年4月3日   |   输入输出(IO)操作   |     0 条评论   |    1701

输入输出(I/O)是程序与外部设备或其他计算机交互的操作:从键盘读、从本地或网络文件读、往外写。Java 把这些操作用流统一接口表示,程序设计更简单。

流(Stream)指输入输出时各部件之间的数据流动。按传输方向分成输入流与输出流。流里既可以是原始二进制,也可以是按某种格式编码后的数据。

一、输入流与输出流

Java 把不同类型的输入输出源抽象为流,其中进出的数据叫数据流(Data Stream)。对程序来说:输出流往存储介质或通道写,输入流从介质或通道读。流式 IO 的特点是沿数据序列顺序进行。

特性 含义
先进先出 最先写入输出流的数据,最先被输入流读到
顺序存取 按写入顺序读写一串字节,不能随机访问中间数据
只读或只写 一条流只能是输入或输出之一;双向通道要各提供一条流

二、缓冲流

为提高传输效率,给流配一块内存当缓冲区(Buffer)。写入时数据先到缓冲区,满了再一次性发给外部设备;读取时实际从缓冲区取,空了再从设备尽量多读来填满。这样程序的 IO 可以独立于具体设备,换设备不必改源程序,可移植性更好。

三、java.io 与两类流

java.io 包里每个类代表一种特定输入或输出流,用前要导入。面向字节的流每次读写 8 位,也叫二进制字节流;面向字符的流一次按 16 位当一个字符处理。Java 字符用 16 位 Unicode,普通文本文件常用 8 位 ASCII,所以字符流和字节流不要混着当一回事。

系统预置了三个可直接用的流对象:

  • System.in 标准输入,通常是键盘。
  • System.out 标准输出,通常写到显示器。
  • System.err 标准错误输出,通常也写到显示器。

字节流和字符流的步骤基本相同。以输入为例:先创建与数据源相关的流对象,再用它的方法读数据,最后 close() 关掉流。

一句话总结:流是顺序、单向的数据通道;缓冲提高效率,字节流对 8 位、字符流对 Unicode,用完 close,标准入口就是 in / out / err。

转载请注明来源:Java输入输出(IO)和流的基本概念
本文链接地址:https://ai.zhousir.top/?p=145
回复 取消