详解java IO流之缓冲流的使用

作者:滥好人 时间:2023-08-08 18:33:16 

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

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

字节缓冲流为:

BufferedInputStream—字节输入缓冲流

BufferedOutputStream—字节输出缓冲流

字符缓冲流为:

BufferedReader—字符输入缓冲流

BufferedWriter—字符输出缓冲流

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

 一.  字节缓冲流

1.BufferedOutputStream—字节输出缓冲流

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

示例代码:


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

来源:http://www.cnblogs.com/hq233/p/6266928.html

标签:java,IO流,缓冲流
0
投稿

猜你喜欢

  • RocketMQ之Consumer整体介绍启动源码分析

    2022-06-04 03:53:31
  • 在启动后台 jar包时,使用指定的 application.yml操作

    2023-01-08 20:10:12
  • Android使用Service实现简单音乐播放实例

    2023-11-30 20:03:23
  • Java Idea高效率配置技巧实例解析

    2023-06-05 13:24:42
  • Java之ThreadLocal使用常见和方式案例讲解

    2023-08-28 13:54:09
  • Android控件Tween动画(补间动画)实现方法示例

    2021-12-31 17:46:39
  • C语言高效编程的几招小技巧

    2023-11-02 14:12:50
  • 详解SpringSecurity中的Authentication信息与登录流程

    2022-01-20 21:36:22
  • Android中简单的电话管理与短信管理App编写实例

    2021-10-11 13:45:50
  • c#队列Queue学习示例分享

    2022-06-30 13:39:45
  • SpringBoot打War包上传到阿里云的LINUX服务器的操作方法

    2021-09-26 22:27:01
  • 详解SpringBoot+SpringSecurity+jwt整合及初体验

    2023-11-28 23:54:48
  • 对int array进行排序的实例讲解

    2021-12-09 06:51:15
  • Android6.0 消息机制原理解析

    2023-08-06 12:19:44
  • Android自定义view仿淘宝快递物流信息时间轴

    2022-02-20 18:51:16
  • 两分钟解决IntelliJ IDEA中文乱码问题(推荐)

    2022-11-09 00:08:15
  • c# 命名空间和程序集

    2023-04-23 20:48:16
  • Javaweb获取表单数据的多种方式

    2022-12-25 18:13:41
  • Java根据ip地址获取归属地实例详解

    2023-11-25 06:24:38
  • Java中URL传中文时乱码的解决方法

    2022-05-17 02:16:55
  • asp之家 软件编程 m.aspxhome.com