快速业务通道

Java编程那些事儿85——IO类体系 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

c、markSupported方法

public boolean markSupported()

该方法的作用是判断流是否支持标记(mark)。标记类似于读书时的书签,可以很方便的回到原来读过的位置继续向下读取。

d、reset方法

public void reset() throws IOException

该方法的作用是使流读取的位置回到设定标记的位置。可以从该位置开始继续向后读取。

e、mark方法

public void mark(int readlimit)

为流中当前的位置设置标志,使得以后可以从该位置继续读取。变量readlimit指设置该标志以后可以读取的流中最大数据的个数。当设置标志以后,读取的字节数量超过该限制,则标志会失效。

f、read方法

read方法是输入流类使用时最核心的方法,能够熟练使用该方法就代表IO基本使用已经入门。所以在学习以及后期的使用中都需要深刻理解该方法的使用。

在实际读取流中的数据时,只能按照流中的数据存储顺序依次进行读取,在使用字节输入流时,读取数据的最小单位是字节(byte)。

另外,需要注意的是,read方法是阻塞方法,也就是如果流对象中无数据可以读取时,则read方法会阻止程序继续向下运行,一直到有数据可以读取为止。

read方法总计有三个,依次是:

public abstract int read() throws IOException

该方法的作用是读取当前流对象中的第一个字节。当该字节被读取出来以后,则该字节将被从流对象中删除,原来流对象中的第二个字节将变成流中的第一个字节,而使用流对象的available方法获得的数值也将减少1。如果需要读取流中的所以数据,只要使用一个循环依次读取每个数据即可。当读取到流的末尾时,该方法返回-1。该返回值的int中只有最后一个字节是流中的有效数据,所以在获得流中的数值时需要进行强制转换。返回值作成int的目的主要是处理好-1的问题。

由于该方法是抽象的,所以会在子类中被覆盖,从而实现最基础的读数据的功能。

public int read(byte[] b) throws IOException

该方法的作用是读取当前流对象中的数据,并将读取到的数据依次存储到数组b(b需要提前初始化完成)中,也就是把当前流中的第一个字节的数据存储到b[0],第二个字节的数据存储到b[1],依次类推。流中已经读取过的数据也会被删除,后续的数据会变成流中的第一个字节。而实际读取的字节数量则作为方法的返回值返回。

public int read(byte[] b, int off, int len) throws IOException

该方法的作用和上面的方法类似,也是将读取的数据存储到b中,只是将流中的第一个数据存储到b中下标为off的位置,最多读取len个数据,而实际读取的字节数量则作为方法的返回值返回。

g、skip方法

public long skip(long n) throws IOException

该方法的作用是跳过当前流对象中的n个字节,而实际跳过的字节数量则以返回值的方式返回。

跳过n个字节以后,如果需要读取则是从新的位置开始读取了。使用该方法可以跳过流中指定的字节数,而不用依次进行读取了。

从流中读取出数据以后,获得的是一个byte数组,还需要根据以前的数据格式,实现对于该byte数组的解析。

由于InputStream类是字节输入流的父类,所以该体系中的每个子类都包含以上的方法,这些方法是实现IO流数据读取的基础。

Java编程那些事儿85——IO类体系(3)

时间:2010-03-15 csdn 陈跃峰

11.2.2 字节输出流OutputStream

该类是所有的字节输出流的父类,在实际使用时,一般使用该类的子类进行编程,但是该类内部的方法是实现字节输出流的基础。

该体系中的类完成把对应的数据写入到数据源中,在写数据时,进行的操作分两步实现:第一步,将需要输出的数据写入流对象中,数据的格式由程序员进行设定,该步骤需要编写代码实现;第二步,将流中的数据输出到数据源中,该步骤由API实现,程序员不需要了解内部实现的细节,只需

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号