1.缓冲流概述
首先要明确一个概念:
对文件或其他目标频繁的读写错作,效率低,性能差。
使用缓冲流的好处是,能够更高效的读写信息,原理是将数据缓冲起来,然后一起写入或者读取出来。
2.BufferedInputStream
public class BufferedInputStream extends FilterInputStream
BuffereInputStream 为另一个输入流添加一些功能,在创建BufferedInputStream时,会创建一个内部缓冲区数组,用于缓冲数据。
3.BufferedOutputStream
public class BufferedOutputStream extends FilterOutputStream
类实现缓冲的输出流,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。
4.BufferedReader
public class BufferedReader extends Reader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
5.BufferedWriter
public class BufferedWriter extends Writer
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。
package com.vince.buffer;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
/**
* 字符缓冲流
* @author lamp
*
*/
public class BufferCharStreamDemo {
/**
* 使用缓冲流实现读取操作
*/
public static void reader(){
try {
Reader r = new FileReader("d:\\Robots伤不起.txt");
//根据字符输入流构造一个字符缓中流
BufferedReader br = new BufferedReader(r);
char[] cs = new char[512];
int len = -1;
StringBuilder sb = new StringBuilder();
while((len=br.read(cs))!=-1){
sb.append(new String(cs,0,len));
}
br.close();
r.close();
System.out.println(sb);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 使用缓冲流实现写入操作
*/
public static void write(){
try {
Writer w = new FileWriter("d:\\5.txt");
//根据字符输出流构造一个字符缓冲流
BufferedWriter bw = new BufferedWriter(w);
bw.write("小白,怎么了,这是,被驴踢了吧");
bw.flush();//刷新
bw.close();
w.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// write();
reader();
}
}
package com.vince.buffer;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
/**
* 缓冲流
* @author lamp
*
*/
public class BufferedStreamDemo {
public static void write(){
try {
OutputStream out = new FileOutputStream("d:\\4.txt");
//根据字节输出流构造一个字节缓冲流
BufferedOutputStream bos = new BufferedOutputStream(out);
String info = "山不在高,有仙则名,学JAVA,没威哥不行。";
bos.write(info.getBytes());
bos.flush();//刷新缓冲区
bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 使用字节缓冲流进行读取操作
*/
public static void input(){
try {
InputStream in = new FileInputStream("d:\\别让大学上了你.txt");
//根据字节输入流构造一个字节缓冲流
BufferedInputStream bis = new BufferedInputStream(in);
Reader r = new InputStreamReader(bis);
char[] cs = new char[512];
int len = -1;
StringBuilder sb = new StringBuilder();
while((len=r.read(cs))!=-1){
sb.append(new String(cs,0,len));
}
r.close();
bis.close();
in.close();
System.out.println(sb);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// input();
write();
}
}