欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字节缓冲流——BufferedOutputStream和BufferedInputStream

程序员文章站 2024-03-04 20:40:24
...

我们都知道对一个文件进行频繁的读写操作,其效率是非常低的,所以又有了缓冲流,它提高IO效率,减少访问磁盘的次数,可以将数据存储在缓冲区中,flush是将缓冲区的内容写入到文件中,也可以直接close。


首先我们先来看看字节缓冲流——BufferedOutputStream和BufferedInputStream,当使用BufferedOutputStream缓冲流时,应用程序就可以将各个字节写入缓冲流中,而不必针对每一个字节写入文件之中。

public class BufferStreamDemo {
    public static void main(String[] args) {
        write();
    }

    private static void write(){
        File file = new File("F:/demo/test.txt");
        try {
            OutputStream os = new FileOutputStream(file);
            BufferedOutputStream bos = new BufferedOutputStream(os);

            String info = "你好,世界";
            bos.write(info.getBytes());
            bos.flush();

            bos.close();
            os.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

其实使用也是非常简单,就是在OutputStream外面又包裹了一层,最后我们需要逐层的关闭流。




BufferedOutputStream在创建时,会创建一个内部缓冲数组,用于缓冲数据。 其使用的方法也是非常简单,和上述一样,就是又包裹了一层,如下:

public class BufferStreamDemo {
    public static void main(String[] args) {
        read();
    }

    private static void read(){
        File file = new File("F:/demo/test.txt");
        try {
            InputStream is = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(is);

            byte[] bytes = new byte[1024];
            StringBuilder sb = new StringBuilder();

            int len = -1;
            while ((len = bis.read(bytes)) != -1){
                sb.append(new String(bytes, 0, len));
            }
            System.out.println(sb.toString());
            bis.close();
            is.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

其实BufferedOutputStream和BufferedInputStream的内部就是有一个数组用于缓冲
字节缓冲流——BufferedOutputStream和BufferedInputStream
字节缓冲流——BufferedOutputStream和BufferedInputStream

相关标签: Java IO