java 字节处理_利用Java数据流处理字节和字符的输入

几乎所有的程序都离不开信息的输入和输出,比如从键盘读取数据,从文件中获取或者向文件存入数据,在显示器上显示数据,以及在网络连接上进行信息交互时,都会涉及有关输入/输出的处理。在Java中,把这些不同类型的输入,输出源抽象为流,而其中输入或输出的数据称为数据流,用统一的接口来表示。

数据流是指一组有顺序的,有起点和终点的字节集合,程序从键盘接收数据或向文件中写数据,以及在网络连接上进行数据的读写操作,都可以使用数据流来完成。

1.输入数据流

输入数据流是指只能读不能写的数据流,用于向计算机内输入信息而用。java.io包中所有输入数据流都是由抽象类InputStream继承而来,并且实现了其中的所有方法,包括读取数据,标记位置,重置读写指针,获取数据量等。从数据流中读取数据时,必须有一个数据源与该数据流相连。

输入数据流中提供的主要数据操作方法有:

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

以上三个函数提供了访问数据流中数据的方法,函数所读取的数据都默认为字节类型。其中最简单的是第一个read()方法,它从输入流中读取一个字节的二进制数据,然后以此数据为低位字节,配上一个全零字节形成一个从0到255之间的整数返回。它是一个抽象方法,需要在子类中具体实现。当输入流读取结束时,它会得到-1,以标志数据流的结束。第二个read方法将多个字节读到数组中,填满整个数组。第三个read方法从输入流中读取长度为len的数据,从数组b中检索为off的位置开始放置读入的数据,读毕返回读取的字节数。

void close()当结束对一个数据流的操作时应该将其关闭,同时释放与该数据流相关的资源,用到的方法即是close(),要注意的是,因为Java提供系统垃圾自动回收功能,所以当一个流对象不再使用时,可以由运行时系统自动关闭,我们也可以养成关闭输入输出流的习惯。

int available()该方法可以返回目前可以从数据流中读取的字节数。

long skip(long I)该方法跳过数据类中指定数量的字节不读,返回值表示实际跳过的字节数。

对数据流中字节的读取通常是从头到尾顺序进行的,如果要以反方向读取,则需要使用回推(push back)操作,方法boolean markSupported()用于指示数据流是否支持回推操作,当一个数据流支持mark()和reset()方法时返回true,反之则返回false。方法mark()用于标记数据流的当前位置,并划出一个缓冲区,其大小至少为指定参数的大小,在执行完随后的read操作后,调用方法reset将回到输入数据流中被标记的位置。

2.输出数据流

输出数据流是指只能写不能读的流,用于从计算机中输出数据。

与输入流类似,java.io包中所有输出数据流大多是从抽象六OutputStream继承而来,并且实现了其中所有方法,这些方法主要是提供了关于数据输出方面的支持。

void write(int i)该方法的含义是将字节i写入数据流中,它只输出低位字节,该方法是抽象方法,需要在其输出流子类中加以实现,然后才能使用。

void write(byte b[])该方法的含义是将数组b中全部的b.length个字节写入数据流。

void wrute(byte b[],int off,int len)该方法的含义是将数组b中从第off个字节开始的len个字节写入数据流。

void close()当结束时对输出数据流的操作,应该将其关闭,这与输入数据流非常相似。

上面提到的InputStream和OutputStream两个类都是抽象类,我们已经知道,抽象类是不能进行实例化的,因此在实际使用中经常使用到的并不是这两个类,而是一系列基本数据流类,它们都是InputStream和OutputStream的子类,在实现其父类方法的同时又定义了其特有的功能,我们下一篇文章将会介绍一些常用的基本数据流。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值