java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对文件或其他目标频繁读写或操作效率低,效能差。这时使用缓冲流能够更高效的读写信息。因为缓冲流先将数据缓存起来,然后一起写入或读取出来。所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能。
缓冲流分为字节和字符缓冲流
字节缓冲流为:
BufferedInputStream—字节输入缓冲流
BufferedOutputStream—字节输出缓冲流
字符缓冲流为:
BufferedReader—字符输入缓冲流
BufferedWriter—字符输出缓冲流
下面主要介绍这四种缓冲流的使用。
一. 字节缓冲流
1.BufferedOutputStream—字节输出缓冲流
BufferedOutputStream类实现缓冲的输出了,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必每一个字节写入都调用底层系统。
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public static void main(String[] args) { try { //创建字节输出流实例 OutputStream out= new FileOutputStream( "L:\\test.txt" ); //根据字节输出流构建字节缓冲流 BufferedOutputStream buf= new BufferedOutputStream(out); String data= "好好学习,天天向上" ; buf.write(data.getBytes()); //写入缓冲区 buf.flush(); //刷新缓冲区,即把内容写入 //关闭流 buf.close(); //关闭缓冲流时,也会刷新一次缓冲区 out.close(); } catch (IOException e) { e.printStackTrace(); } } |
2.BufferedInputStream—字节输入缓冲流
BufferedInputStream为别的输入流添加缓冲功能,在创建BufferedInputStream时会创建一个内部缓冲数组,用于缓冲数据,提高性能。
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public static void main(String[] args) { try { //创建字节输入流实例 InputStream in= new FileInputStream( "L:\\test.txt" ); //根据字节输入流构建字节缓冲流 BufferedInputStream buf= new BufferedInputStream(in); byte []bytes= new byte [ 1024 ]; //数据读取 int len=- 1 ; StringBuffer sb= new StringBuffer(); while ((len=buf.read(bytes))!=- 1 ) { sb.append( new String(bytes, 0 ,len)); } System.out.println( "内容为:" +sb); //关闭流 buf.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } |
二. 字符缓冲流
1.BufferedWriter—字符输出缓冲流
将文本写入字符输出流,缓冲各个字符,从而提供高效的写入。可以指定缓冲区的大小,一般情况下,默认的缓冲区大小就足够了。
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public static void main(String[] args) { try { Writer w= new FileWriter( "L:\\test.txt" ); //根据字符输出流创建字符缓冲流 BufferedWriter buf= new BufferedWriter(w); //写入数据 buf.write( "只要功夫深铁杵磨成针" ); //刷新流 buf.flush(); //关闭流 buf.close(); w.close(); } catch (IOException e) { e.printStackTrace(); } } |
2.BufferedReader—字符输入缓冲流
从字符输入流中读取信息,缓冲各个字符,从而实现高效读取。可以指定缓冲区的大小,一般情况下,默认的缓冲区大小就足够了。默认大小为8192.
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public static void main(String[] args) { try { Reader r= new FileReader( "L:\\test.txt" ); //根据字符输入流创建字符缓冲流 BufferedReader buf= new BufferedReader(r); char [] data= new char [ 512 ]; //数据读取 int len=- 1 ; StringBuilder sb= new StringBuilder(); while ((len=buf.read(data))!=- 1 ) { sb.append( new String(data, 0 ,len)); } System.out.println( "内容是: " +sb); //关闭流 buf.close(); r.close(); } catch (IOException e) { e.printStackTrace(); } } |
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!
原文链接:http://www.cnblogs.com/hq233/p/6266928.html