IO流之缓冲流_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > IO流之缓冲流

IO流之缓冲流

 2015/4/14 6:22:32  hm4123660  程序员俱乐部  我要评论(0)
  • 摘要:缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对文件或其他目标频繁读写或操作效率低,效能差。这时使用缓冲流能够更高效的读写信息。因为缓冲流先将数据缓存起来,然后一起写入或读取出来。所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能。缓冲流分为字节和字符缓冲流字节缓冲流为:BufferedInputStream—字节输入缓冲流BufferedOutputStream—字节输出缓冲流字符缓冲流为
  • 标签:

????????缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对文件或其他目标频繁读写或操作效率低,效能差。这时使用缓冲流能够更高效的读写信息。因为缓冲流先将数据缓存起来,然后一起写入或读取出来。所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能。

?

?????? 缓冲流分为字节和字符缓冲流

字节缓冲流为:

BufferedInputStream—字节输入缓冲流

BufferedOutputStream—字节输出缓冲流

字符缓冲流为:

BufferedReader—字符输入缓冲流

BufferedWriter—字符输出缓冲流

下面主要介绍这四种缓冲流的使用。

?

一.字节缓冲流

1.BufferedOutputStream—字节输出缓冲流

???? ????? BufferedOutputStream类实现缓冲的输出了,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必每一个字节写入都调用底层系统。

该类的构造函数



?

示例代码:

class="java">    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时会创建一个内部缓冲数组,用于缓冲数据,提高性能。

????

?

?

?

示例代码:

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—字符输出缓冲流

??????????? 将文本写入字符输出流,缓冲各个字符,从而提供高效的写入。可以指定缓冲区的大小,一般情况下,默认的缓冲区大小就足够了。



?

?

示例代码:

 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.

?

示例代码:

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();
		}
    	
   
    }  

?运行结果:



?

  • 大小: 20.4 KB
  • 大小: 8.4 KB
  • 大小: 5.1 KB
  • 大小: 10.3 KB
  • 大小: 5.5 KB
  • 大小: 5.8 KB
  • 查看图片附件
上一篇: JFinal学习 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名