您现在的位置:新闻首页>资讯

Java字节流的使用:字节输入/输出流、文件输入/输出流、字节数组输入/输出流

2019-11-03 05:30编辑:admin人气:


在本章的第一节《Java什么是输入/输出流?》中就提到 Java 所有表示字节输入流类的父类是 InputStream,它是一个抽象类,因此继承它的子类要重新定义父类中的抽象方法。所有表示字节输出流类的父类是 OutputStream,它也是一个抽象类,同样子类需要重新定义父类的抽象方法。

下面首先介绍上述两个父类提供的常用方法,然后介绍如何使用它们的子类输入和输出字节流,包括 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() 方法的另外两种形式
 
void write(byte[] b)   把参数 b 指定的字节数组中的所有字节写到输出流中  
void write(byte[] b,int off,int len)   把参数 b 指定的字节数组中的若干字节写到输出流中。其中,off 指定字节
数组中的起始下标,len 表示元素个数
 
void close()   关闭输出流。写操作完成后,应该关闭输出流。系统将会释放与这个输出
流相关的资源。注意,OutputStream 类本身的 close() 方法不执行任何操
作,但是它的许多子类重写了 close() 方法
 
void flush()   为了提高效率,在向输出流中写入数据时,数据一般会先保存到内存缓冲
区中,只有当缓冲区中的数据达到一定程度时,缓冲区中的数据才会被写
入输出流中。使用 flush() 方法则可以强制将缓冲区中的数据写入输 出流,
并清空缓冲区
 
字节数组输入流 ByteArrayInputStream 类可以从内存的字节数组中读取数据,该类有如下两种构造方法重载形式。

ByteArrayInputStream(byte[] buf):创建一个字节数组输入流,字节数组类型的数据源由参数 buf 指定。

(原标题:Java字节流的使用:字节输入/输出流、文件输入/输出流、字节数组输入/输出流)
责任编辑:重庆新闻
温馨提示:以上内容仅为信息传播之需要,不作为投资参考,网投有风险,投资需谨慎!
转载请注明:http://www.591ihome.com/zixun/284906.html
网投之家首发:Java字节流的使用:字节输入/输出流、文件输入/输出流、字节数组输入/输出流
(来源:www.591ihome.com)

织梦二维码生成器
已推荐
0
  • 凡本网注明"来源:的所有作品,版权均属于中,转载请必须注明中,http://www.591ihome.com。违反者本网将追究相关法律责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。






图说新闻

更多>>
「股票配资平台类型」他贿赂纳粹,靠战争谋利,却因为这个抉择让世人铭记

「股票配资平台类型」他贿赂纳粹,靠战争谋利



返回首页