大家好,我是Java进阶。前言本文主要学习BufferedInputStream类方法,使用BufferedInputStream类读取文本文件内容,BufferedOutputStream类将内容写入文件及其常用方法。接下来,小编就带大家一起来学习吧!一、BufferedInputStream类方法1、BufferedInputStream是对输入流进行缓冲,可以减少磁盘访问次数,提高文件读取性能。它是FilterInputStream类的子类。2、BufferedInputStream类的方法有:(1)intavailable()方法:用于返回输入流中可用的未读字节数,不会因为下次调用这个InputStream的方法而阻塞。(2)voidclose()方法:关闭输入流并释放与该流相关的所有系统资源。(3)voidmark(intreadlimit)方法:标记输入流的当前位置,readlimit参数是在标记位置失效前允许输入流读取的字节数。(4)booleanmarkSupported()方法:测试输入流是否支持mark和reset方法。(5)intread()方法:读取一个字节。(6)intread(byte[]b,intoff,intlen)方法:读取多个字节到字节数组b中,参数off为数组偏移量,参数len为读取数据的长度。(7)voidreset()方法:将流的当前位置重置为之前标记的位置。(8)longskip(longn)方法:跳过流中的数据。如果数据不够,则跳过唯一的字节并返回跳过的字节数。二、BufferedInputStream类read(byte[]b,intoff,intlen)方法1、publicintread(byte[]b,intoff,intlen)方法:将多个字节读入字节数组b中,参数off为数组偏移量,参数len为读取数据的长度。2、read(byte[]b,intoff,intlen)方法的实现示例:(1)在text文件夹下新建一个test.txt文件,写入“helloworld,java!”内容。(2)建立输入流BufferedInputStream,缓冲区大小为8,实现读取字节流前5个字节的代码。publicclassP09{publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstub//创建带缓冲区的输入流BufferedInputStreamin=newBufferedInputStream(newFileInputStream("text/test"),8);//从字节流中读取5个字节bytetemp[]=newbyte[5];//read(byte[]b,intoff,intlen)方法in.read(temp,0,5);System.out.println("字节流的前5个字节是:"+newString(temp));}}运行结果如下图所示:3.BufferedInputStream类的mark()和reset()方法1.voidmark(intreadlimit)方法:输入流处做一个标记当前位置,readlimit参数是在标记位置失效前允许输入流读取的字节数。2.voidreset()方法:将流的当前位置重置为之前标记的位置。3、实例的实现:importjava.io.*;publicclassP09{publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstub//创建带缓冲区的输入流BufferedInputStreamin=newBufferedInputStream(newFileInputStream("text/test"),8);//从字节流中读取5个字节bytetemp[]=newbyte[5];//read(byte[]b,intoff,intlen)方法in.read(temp,0,5);System.out.println("字节流的前5个字节是:"+newString(temp));//标记测试in.mark(6);in.read(temp,0,5);System.out.println("字节流的第6到10个字节为:"+newString(temp));//reset()方法in.reset();System.out.printf("ReadafterresetThefirstbytetakeis:%c",in.read());}}运行结果如下图所示:4.BufferedOutputStream类1.BufferedOutputStream类是一个字节缓冲输出流,它是FilterOutputStream类的子类。2、BufferedOutputStream类常用方法如下:(1)voidwrite(intb)方法:一次写入一个字节。(2)voidwrite(byte[]b,intoff,intlen)方法:将指定数组b中偏移量off起len个字节写入文件输出流。off参数表示数组偏移量,len表示要写入的字节数。(3)voidflush()方法:刷新这个缓冲输出流。这会强制将所有缓冲的输出字节写出到底层输出流。(4)voidclose()方法:关闭这个输入流,释放与这个流相关的所有系统资源。3、BufferedOutputStream方法的实现示例:importjava.io.*;publicclassP10{publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstub//创建带缓冲流的输出流BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream("text/test10"));//在文本中写入小写字母filebos.write(97);//在文本文件中写入“Java高级学习交流”bos.write("\nJava高级学习交流\n".getBytes());//创建一个字节数组byte[]bytes={97,98,99,100,101};//从偏移量2为c开始,获取并写入2个字节bos.write(bytes,2,2);//刷新缓冲流bos.flush();//关闭streambos.close();}}运行结果如下:五、总结本文主要介绍BufferedInputStream类的方法和BufferedOutputStream类。引入了BufferedInputStream的read(byte[]b,intoff,intlen)方法,mark()和reset()方法。通过实例了解这些方法的用法,并使用BufferedInputStream读取文本内容。BufferedOutputStream类是字节缓冲输出流,它是FilterOutputStream类的子类。BufferedOutputStream写入文本内容。希望大家通过本文的学习对大家有所帮助!本文转载自微信公众号《Java进阶学习交流》,可通过以下二维码关注。转载本文请联系Java进阶学习交流公众号。
