Java文件与IO(三)之缓冲流

来源:互联网 发布:java.io jar包下载 编辑:程序博客网 时间:2024/06/06 12:25

缓冲流

首先要明确一个概念:

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

使用缓冲流的好处

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

缓冲流的几个方法:

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();        }    }

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

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

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

1 0