文件与IO(三)之缓冲流

缓冲流

首先要明确一个概念:

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

使用缓冲流的好处

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

缓冲流的几个方法:

BufferedInputStream: 为另一个输入流添加一些功能,在创建BufferedInputStream时,会创建一个内部缓冲区数 组,用于缓冲数据。
BufferedOutputStream:通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字 节写入调用底层系统 节写入调用底层系统。
BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
BufferedWriter::将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

针对上述方法写了几个Demo

为方便后续方法调用文件路径我定义了两个静态final路径

private static final String PATHA = "a.txt";
    private static final String PATHB = "b.txt";

字符输出缓冲流

public static void charStreamOut() {
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(PATHB));
            bw.write("男人,就应该对自己狠一点!");
            bw.flush();
            bw.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

字符输入缓冲流

public static void charStreamIn() {

        try {
            BufferedReader br = new BufferedReader(new FileReader(PATHB));
            // char[] cs = new char[2];
            // int len = -1;
            // StringBuffer stb = new StringBuffer();
            // while ((len = br.read(cs)) != -1) {
            // stb.append(new String(cs, 0, len));
            // }
            //应用缓冲流之后可以用下面的方法读取
            String info = br.readLine();
            br.close();
            System.out.println(info);
            // System.out.println(stb.toString());

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

字节输出缓冲流

public static void byteStreamOut() {

        OutputStream out;
        try {
            out = new FileOutputStream(PATHA);
            // 字节输出流具备缓冲功能
            BufferedOutputStream bos = new BufferedOutputStream(out);

            bos.write("测试字符串".getBytes());
            bos.flush();
            bos.close();
            out.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

字节输入缓冲流

public static void byteStreamIn() {

        InputStream in;
        try {
            in = new FileInputStream(PATHA);
            // 字节输入流,具备缓冲功能, 此处可以设置缓存大小
            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.toString());

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

注: 缓冲流在我们平常的使用非常频繁, 所以咱们要仔细得学习缓冲流的相关方法.

以上纯属个人见解, 如有不足之处希望有高人指出, 定感激不尽, 如有喜欢交流学习经验请给我留言谢谢.

原创文章, 转载请注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值