带缓存的输入输出流

时间:2021-03-15 22:41:44

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

一.BufferedinputStream与BufferedOutputStream类

   1. BufferedinputStream有两种构造方法:

    (1)BufferedinputStream(inputStream in)

    (2)BufferedinputStream(inputStream in,int size)

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

   2.BufferedOutputStream类有两种构造方法

     (1)BufferedOutputStream(OutputStream in)

     (2)BufferedOutputStream(OutputStream in,int size)

     第一种构造方法创建了一个有32个字节的缓存区域,第二种构造方法以指定的大小来创建缓存区

  注意:flush()方法是用于即使在缓存区域没有存满的情况下,也将缓存区的内容强制写入到外设,习惯上称这个过程为刷新,flush()方法只对使用缓存区的OutputStream类的子类有效,当调用close()方法时,系统在关闭之前,也将缓存区中的信息刷新到磁盘文件中。

二.BufferedReader与BufferedWriter类

    BufferedReader类常用的方法如下。

    (1)read()方法:读取单个字符。

    (2)readLine()方法:读取一个文本行,并将其返回为字符串。若无数据可读,则返回null。BufferedWriter类中的方法都返回void,常用的方法如下:

     (1) write(String s,int off, int len)方法:写入字符串的某一部分。

     (2)flush()方法:刷新该流得缓存。

     (3)newline()方法:写入一个行分隔符。

 例:

带缓存的输入输出流带缓存的输入输出流
 1 package file;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.File;
 6 import java.io.FileReader;
 7 import java.io.FileWriter;
 8 
 9 public class Student {
10    public static void main(String []args){
11        String contet[] = {"夜夜思君情断肠,缘何人不双,夜夜痴迷空自伤,月随人彷徨"};
12        //创建文件对象
13        File file = new File("D:/Sourcecode/Java/file/word2.txt");
14        try{
15            //创建FileWriter类对象
16            FileWriter fw = new FileWriter(file);
17            //创建bufferWriter类对象
18            BufferedWriter buffw  = new BufferedWriter(fw);
19            for(int k = 0;k < contet.length;k++){
20                buffw.write(contet[k]);//将字符串数组中的元素写入到磁盘文件中
21                buffw.newLine();//将数组中的单个元素以单行的形式写入文件
22            }
23            buffw.close();    //将BufferReader流关闭
24            fw.close();       //将FileWriter流关闭
25        }catch(Exception e){
26            e.printStackTrace();
27        }
28        try{
29            //创建FileReader类对象
30            FileReader fr = new FileReader(file);
31            //创建BufferReader类对象
32            BufferedReader bufr = new BufferedReader(fr);
33            String s = null;//创建字符串对象
34            int i = 0;    
35            //如果文件文本行数不为空,则进入循环
36            while((s = bufr.readLine()) != null){
37                i++;
38                System.out.println("第"+i+"行"+s);
39            }
40            bufr.close();
41            fr.close();
42            
43        }catch(Exception e){
44            e.printStackTrace();
45        }
46    }
47 }
View Code

 运行结果:

第1行夜夜思君情断肠,缘何人不双,
第2行夜夜痴迷空自伤,月随人彷徨

相关文章