Java中缓冲流的使用
一、功能
内部提供了一个缓冲区,可以提高读写速度。
二、示例
(一)字节流
@Test
public void bufferedInputStreamTest() {
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
//1、造文件
File srcFile = new File("hello.txt");
File destFile = new File("hi.txt");
//2、造节点流
fileInputStream = new FileInputStream(srcFile);
fileOutputStream = new FileOutputStream(destFile);
//3、造缓冲流
bufferedInputStream = new BufferedInputStream(fileInputStream);
bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
//4、读取、写入
byte[] buffer = new byte[10];
int len;
while ((len = bufferedInputStream.read(buffer)) != -1) {
bufferedOutputStream.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//5、关闭流
if (bufferedOutputStream != null) {
try {
bufferedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedInputStream != null) {
try {
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//关闭外层流的同时,内存流也会自动的进行关闭,关于内层流的关闭,可以省略。
/*if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}*/
}
}
(二)字符流
@Test
public void bufferedStreamTest() {
FileReader fileReader = null;
FileWriter fileWriter = null;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
//1、造文件
File srcFile = new File("hello.txt");
File destFile = new File("hi.txt");
//2、造节点流
fileReader = new FileReader(srcFile);
fileWriter = new FileWriter(destFile);
//3、造缓冲流
bufferedReader = new BufferedReader(fileReader);
bufferedWriter = new BufferedWriter(fileWriter);
//4、读取、写入
//方式一
/*char[] buffer = new char[10];
int len;
while ((len = bufferedReader.read(buffer)) != -1) {
bufferedWriter.write(buffer, 0, len);
}*/
//方式二
String data;
while ((data = bufferedReader.readLine()) != null) {
//一次读取一行,不包括换行符
bufferedWriter.write(data);
//加一个换行符
bufferedWriter.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//5、关闭流
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//关闭外层流的同时,内存流也会自动的进行关闭,关于内层流的关闭,可以省略。
}
}