Java文件与io——缓冲流

对文件或其它目标频繁的读写操作,效率低,性能差。

使用缓冲流的好处,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来。

BufferedInputStream:为另一个输入流添加一些功能,在创建时,会创建一个内部缓冲区数组,用于缓冲数据

BufferedOutputStream:通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统

BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

public class BufferedStreamDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        byteStreamOut();
        byteStreamIn();
        charStreamOut();
        charStreamIn();
    }
    //BufferedOutputStream
    public static void byteStreamOut(){
        try {
            OutputStream out=new FileOutputStream("G:\hhb.txt");
            BufferedOutputStream bos=new BufferedOutputStream(out);
            bos.write("hhhhh".getBytes());
            bos.close();
            out.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    //BufferedInputStream
    public static void byteStreamIn(){
        try {
            InputStream in=new FileInputStream("G:\hhb.txt");
            BufferedInputStream bis=new BufferedInputStream(in);
            byte[] bytes=new byte[1024];
            int len=-1;
            StringBuffer sb=new StringBuffer();
            while((len=bis.read(bytes))!=-1){
                sb.append(new String(bytes, 0, len));
            }
            bis.close();
            in.close();
            System.out.println(sb);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //BufferedWriter
    public static void charStreamOut(){
        try {
            Writer w=new FileWriter("G:\hhh.txt");
            BufferedWriter bw=new BufferedWriter(w);
            bw.write("我爱你!");
            bw.close();
            w.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //BufferedReader
    public static void charStreamIn(){
        try {
            Reader r=new FileReader("G:\hhh.txt");
            BufferedReader br=new BufferedReader(r);
            char[] c=new char[1];
            int len = -1;
            StringBuffer sb=new StringBuffer();
            while((len=br.read(c))!=-1){
                sb.append(c,0,len);
            }
            br.close();
            r.close();
            System.out.println(sb);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
                
    }
}
原文地址:https://www.cnblogs.com/shenhainixin/p/5117834.html