输入输出应用编程
Input/Output
:指跨越出了
JVM
的边界,与外界数据的源头或者目标数据源进行数据交换
Java
程序会从各种地方输入数据,比如文件,磁盘,网络,其它程序中
Java
会采用不同的方式输出执行结果,比如屏幕、文件、磁盘、网络等
输入
/
输出是针对
JVM
而言
输入输出种的流模型
在
Java
程序中,对于数据的输入输出操作以流
Stream
方式进行,
JavaSE
提供各种各样的类用于使用相同的方法获取不同类型的数据,程序中通过标准的方法输入或者输出数据
流是处理输入
/
输出的一个洁净的方法,它不需要代码理解键盘和网络的不同。
Java
中流的实现是基于java.io包定义的类层次结构的
流概念
java.io
包通过数据流、序列化和文件系统为用户提供一种完成
I/O
操作的输入
/
输出流
数据流是指所有的数据通信通道
流是字节或字符数据的数据源或目的,用以隐藏数据传输细节,可以从流读取数据或将数据写到流
Java
程序不能直接操纵
I/O
设备,而是在程序和设备之间加入了一个中间介质,这就是流。
IO
输入输出通常指数据在内部存储器和外部存储器或其它周边设备之间的输入输出
流是数据传输的抽象表达,与具体设备无关。程序一旦建立了流,就可以不用理会起点或终点是何种设备
建立流实际上就是建立数据传输通道,将起点和终点连接起来
Java
程序通过流来完成输入
/
输出,它是生产或消费信息的抽象
流通过
Java
的输入
/
输出系统与物理设备链接。尽管与它们链接的物理设备不尽相同,但是所有流的行为具有同样的方式
相同的输入
/
输出类和方法适用于所有类型的外部设备。这意味着一个输入流能够抽象多种不同类
型的输入,
从磁盘文件,从键盘或从网络套接字获取输入,一个输出流可以输出到控制台,磁盘文件或相连的网络。流是处理输入/
输出的一个洁净的方法,它不需要代码理解键盘和网络的不同。
流的分类
从
Java
不同版本上来说,流可以分为
BIO
、
NIO
和
AIO
三大类。
Java
中的
BIO
、
NIO
和
AIO
理解为是
Java语言对操作系统的各种 IO
模型的封装。程序员在使用这些
API
的时候,不需要关心操作系统层面的知识,也不需要根据不同操作系统编写不同的代码。只需要使用Java
的