java io 系统_java I/O 系统

I/O输入/输出(Input/Output),从直观意义上来说,就是计算机的输入与输出操作,描述的是计算机数据的流动过程。在编程语言的I/O类库中经常使用流这个概念,它代表任何有能力产出数据的数据源对象或任何有能力接收数据的接收端对象,使用流可以有效的屏蔽实际I/O设备处理数据的细节。

InputStream和OutputStream

java中流的操作都是从InputStream和OutputSream中派生出来的,用于读取和写入单个字节和字节数组。由于InputStream和OutputSream是面向字节的,所以们通常不会直接使用它,而是通过叠合多个对象来提供所期望的功能。

例如一个实现文件复制的程序,数据源从文件输入流到字节数据输入流,再通过字节数据输出流到文件输出流。

public class CommonApplication {

private static String finePath = "/Users/htx/Public/project/instrument-api/common/src/main/java/com/mengyunzhi/common/";

public static void main(final String[] args) throws IOException {

DataInputStream dataInputStream = new DataInputStream(new FileInputStream(finePath + "data.txt"));

DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(finePath + "copy.txt"));

while (dataInputStream.available() != 0) {

dataOutputStream.writeByte(dataInputStream.readByte());

}

}

}

99a029566ea840aa75bda1970c941f98.png

InputSream

InputStream用来表示从不同的数据源产生输入的类,这些数据源包括:

字节数组

String对象

文件

"管道"

一个由其他种类的流组成的序列

其他数据源

每一个数据源都有相应的InputStream子类,FilterInputSream也属于一种InputSream(稍后讨论)为"装饰器"提供基类。下面是InputSream常用的子类:

功能

ByteArrayInputSream

将内存的缓冲区当作InputSream使用

StringBufferInputSream

将String转换成InputSream

FileInputSream

用于从文件读取信息

OutputSream

同样的根据输入源,OutputSream决定了输出所要去往的目标:字节数组、文件或管道、 FilterOutputStream(稍后讨论)。

功能

ByteArrayOutputSream

在内存中创建缓冲区,所有送往"流"的数据都要放置在此缓冲区

FileOutputSream

用于将信息写至文件

FilterInputStream和FilterOutputStream

在javaI/O类库中需要多种不同功能的组合,这正式使用装饰器模式的理由。我们使用不用的FilterInputSream(FilterOutputSream)来装饰InputStream(OutputStream)来获取不同的功能。

常用的FilterInputStream:

功能

DataInputSream

与DataOutputSream搭配使用,因此可以按照可移植方式从流读取基本的数据类型(int char long)

BufferInputStream

可以防止每次读取时都得进行实际写操作。代表使用缓冲区

常用的FilterOutputtSream:

功能

DataOutputStream

与DataInputSream 搭配使用,因此可以按照可移植的方式向流中写入基本类型数据(int,char long)

BufferedOutputStream

使用它避免每次发送数据时都要进行实际的写操作。代表使用缓冲区

FilterInputStream(FilterOutputStream)的构造函数中都可以传入一个InputStream(OutputStream)对象,它的功能就是装饰InputStream(OutputStream)这个对象拓展它的功能来适应不同的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值