buffered stream 是对unbuffered stream的封装,从而减少读写的操作,提高程序的效率,由上图可以看出,buffered stream 可以分为 字节流和字符流两种,用来封装字节流的buffered stream 类为:BufferedInputstream,BufferedOutputStream 其构造方法为:BufferedInputstream(InputStream in),BufferedOutputStream (OutPutStream out). 这两个类对应的常用方法分别是read() 和 write(int c).
用来封装字符流的buffered stream类为: BufferedReader 和 BufferedWriter 其构造方法:BufferedReader(Reader read), BufferedWriter(Writer write) 常用的方法为readLine() 和writer(String s).
代码示例:
package io.bufferedstream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
*
* @author PENGGR
*
* Buffered Stream
* 1.buffered for byte stream: BufferedInputStream,BufferedOutputStream
* 2.buffered for character stream: BufferedReader, BufferedWriter
*
* Why buffered? performance improving.
*/
public class CopyBufferedStream {
public static void main(String[] args) {
BufferedInputStream inputStream = null;
BufferedOutputStream outputStream = null;
BufferedReader inputStream2 = null;
BufferedWriter outputStream2 = null;
try {
inputStream = new BufferedInputStream(new FileInputStream("D:\\360云盘\\javase\\src\\io\\xanadu.txt"));
outputStream = new BufferedOutputStream(new FileOutputStream(
"D:\\360云盘\\javase\\src\\io\\bufferedStreamOut.txt"));
int c;
while ((c = inputStream.read()) != -1) {
// outputStream.write(l);
outputStream.write(c);
}
inputStream2 = new BufferedReader(new FileReader("D:\\360云盘\\javase\\src\\io\\xanadu.txt"));
outputStream2 = new BufferedWriter(new FileWriter("D:\\360云盘\\javase\\src\\io\\bufferedStreamOut2.txt"));
String l;
while ((l = inputStream2.readLine()) != null) {
outputStream2.write(l);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
if (outputStream2 != null) {
outputStream2.close();
}
if (inputStream2 != null) {
inputStream2.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}