您的位置:首页 > 其它

带缓存的输入输出流

2016-03-15 21:09 176 查看
一.带缓存的输入输出流

缓存可以说是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip()、mark()和reset()方法都成为可能。

1.BufferedInputStream类和BufferedOutputStream类

(1)BufferedInputStream类可以对任意的InputStream类进行带缓存区的包装以达到性能的优化。

BufferedInputStream类有两个构造函数:

BufferedInputStream(InputStream in);

BufferedInputStream(InputStream in,int size);

第一种形式的构造函数创建了一个带有32个字节的缓存流;第二种形式的构造函数按指定的大小来创建缓存区。一个最优的缓存区的大小,取决于它所在的操作系统、可用的内存空间以及机器配置。从构造函数可以看出,BufferedInputStream对象位于InputStream类对象之前。

package org.hanqi.ex;

import java.io.*;

public class TestFile4 {

public static void main(String[] args) {

try {
File f=new File("d:\\test.txt");

//带缓存
//Writer接口的实现类
FileWriter fw= new FileWriter(f,true);

//缓存写入类,构造时需要传入Writer实例
BufferedWriter  bw=new BufferedWriter(fw);

bw.write("\n这是清空前缓存方式写入的字符串");

//自动管理缓存:
//自动写入:1.缓存满了  2.缓存关闭之前

bw.flush();//主动清空缓存,写入数据

bw.write("\n这是清空后缓存方式写入的字符串");

bw.close();
fw.close();

System.out.println("写入完成");

//缓存读

FileReader fr=new FileReader(f);

BufferedReader  br=new BufferedReader(fr);

//第一次读
//            String str =br.readLine();
//
//
//            while(str!=null)
//            {
//                System.out.println(str);
//
//                str=br.readLine();
//            }

while (true)
{
String str=br.readLine();

if(str==null)
{
break;
}

System.out.println(str);
}

} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}

}


缓存



小结:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: