java字节数据转换流_Java字节流的使用:字节输入/输出流、文件输入/输出流、字节数组输入/输出流...

在本章的第一节《Java流的概念》中就提到InputStream 是 Java 所有字节输入流类的父类,OutputStream 是 Java 所有字节输出流类的父类,它们都是一个抽象类,因此继承它们的子类要重新定义父类中的抽象方法。

下面首先介绍上述两个父类提供的常用方法,然后介绍如何使用它们的子类输入和输出字节流,包括 ByteArrayInputStream 类、ByteArrayOutputStream 类、FileInputStream 类和 FileOutputStream 类。

字节输入流

InputStream 类及其子类的对象表示字节输入流,InputStream 类的常用子类如下。

ByteArrayInputStream 类:将字节数组转换为字节输入流,从中读取字节。

FileInputStream 类:从文件中读取数据。

PipedInputStream 类:连接到一个 PipedOutputStream(管道输出流)。

SequenceInputStream 类:将多个字节输入流串联成一个字节输入流。

ObjectInputStream 类:将对象反序列化。

使用 InputStream 类的方法可以从流中读取一个或一批字节。表 1 列出了 InputStream 类的常用方法。

表 1 InputStream类的常用方法

方法名及返回值类型

说明

int read()

从输入流中读取一个 8 位的字节,并把它转换为 0~255 的整数,最后返回整数。

如果返回 -1,则表示已经到了输入流的末尾。为了提高 I/O 操作的效率,建议尽量

使用 read() 方法的另外两种形式

int read(byte[] b)

从输入流中读取若干字节,并把它们保存到参数 b 指定的字节数组中。 该方法返回

读取的字节数。如果返回 -1,则表示已经到了输入流的末尾

int read(byte[] b, int off, int len)

从输入流中读取若干字节,并把它们保存到参数 b 指定的字节数组中。其中,off 指

定在字节数组中开始保存数据的起始下标;len 指定读取的字节数。该方法返回实际

读取的字节数。如果返回 -1,则表示已经到了输入流的末尾

void close()

关闭输入流。在读操作完成后,应该关闭输入流,系统将会释放与这个输入流相关

的资源。注意,InputStream 类本身的 close() 方法不执行任何操作,但是它的许多

子类重写了 close() 方法

int available()

返回可以从输入流中读取的字节数

long skip(long n)

从输入流中跳过参数 n 指定数目的字节。该方法返回跳过的字节数

void mark(int readLimit)

在输入流的当前位置开始设置标记,参数 readLimit 则指定了最多被设置标记的字

节数

boolean markSupported()

判断当前输入流是否允许设置标记,是则返回 true,否则返回 false

void reset()

将输入流的指针返回到设置标记的起始处

注意:在使用 mark() 方法和 reset() 方法之前,需要判断该文件系统是否支持这两个方法,以避免对程序造成影响。

字节输出流

OutputStream 类及其子类的对象表示一个字节输出流。OutputStream 类的常用子类如下。

ByteArrayOutputStream 类:向内存缓冲区的字节数组中写数据。

FileOutputStream 类:向文件中写数据。

PipedOutputStream 类:连接到一个 PipedlntputStream(管道输入流)。

ObjectOutputStream 类:将对象序列化。

利用 OutputStream 类的方法可以从流中写入一个或一批字节。表 2 列出了 OutputStream 类的常用方法。

表 2 OutputStream 类的常用方法

方法名及返回值类型

说明

void write(int b)

向输出流写入一个字节。这里的参数是 int 类型,但是它允许使用表达式,

而不用强制转换成 byte 类型。为了提高 I/O 操作的效率,建议尽量使用

write() 方法的另外两种形式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值