缓冲流
首先要明确一个概念:
对文件或其它目标频繁的读写操作,效率低,性能差。
使用缓冲流的好处
能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来。
缓冲流的几个方法:
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();
}
}
注: 缓冲流在我们平常的使用非常频繁, 所以咱们要仔细得学习缓冲流的相关方法.
以上纯属个人见解, 如有不足之处希望有高人指出, 定感激不尽, 如有喜欢交流学习经验请给我留言谢谢.
原创文章, 转载请注明出处