目录
字节缓冲流
体系
作用
提高字节流读写数据的性能
- 原理:字节缓冲输入流自带了8KB缓冲池;字节缓冲输出流也自带了8KB缓冲池。
构造器
构造器 | 说明 |
---|---|
publicBufferedInputStream(InputStream is) | 把低级的字节输入流包装成一个高级的缓冲字节输入流,从而提高读数据的性能 |
public BufferedOutputStrean(OutputStream os) | 把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能 |
实例演示
需求:使用字节缓冲流复制文件
import java.io.*;
public class BufferedInputStreamTest1 {
public static void main(String[] args) {
try(
InputStream is = new FileInputStream("HelloWorld/src/file.txt");
//1、定义一个字节缓冲输入流包装原始的字节输入流
InputStream bis = new BufferedInputStream(is,8192 * 2); //可以更改大小
OutputStream os = new FileOutputStream("HelloWorld/src/filecopy.txt");
//2、定义一个字节缓冲输出流包装原始的字节输出流
OutputStream bos = new BufferedOutputStream(os,8192 * 2);
){
byte[] buffer = new byte[1024];
int len;
while( (len = is.read(buffer)) != -1 ){
bos.write(buffer,0,len);
}
System.out.println("复制完成!!");
}catch(Exception e){
e.printStackTrace();
}
}
}
字符缓冲流
BufferedReader(字符缓冲输入流)
- 作用:自带8K(8192)的字符缓冲池,可以提高字符输入流读取字符数据的性能。
体系
构造器及方法(1)
构造器 | 说明 |
---|---|
public BufferedReader(Reader r) | 把低级的字符输入流包装成字符缓冲输入流管道,从而提高字符输入流读字符数据的性能 |
字符缓冲输入流新增的功能:按照行读取字符
方法 | 说明 |
---|---|
public String readLine() | 读取一行数据返回,如果没有数据可读了,会返回null |
实例演示(1)
读取文件file.txt
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Reader;
public class BufferedReaderTest1 {
public static void main(String[] args) {
try(
Reader fr = new FileReader("HelloWorld/src/file.txt");
//创建一个字符缓冲输入流包装原始的字符输入流
BufferedReader br = new BufferedReader(fr);
){
String line; //记住每次读取的一行数据
while( (line = br.readLine()) != null ){
System.out.println(line);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
运行结果:
BufferedWriter(字符缓冲输出流)
- 作用:自带8K的字符缓冲池,可以提高字符输出流写字符数据的性能。
原始的字符输出流也自带缓冲区,但是比较小。
构造器及方法(2)
构造器 | 说明 |
---|---|
public BufferedWriter(Writer r) | 把低级的字符输出流包装成一个高级的缓冲字符输出流管道,从而提高字符输出流写数据的性能 |
字符缓冲输出流新增的功能:换行
方法 | 说明 |
---|---|
public void newLine() | 换行 |
实例演示(2)
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.Writer;
public class BufferedWriterTest1 {
public static void main(String[] args) {
try(
Writer fw = new FileWriter("HelloWorld/src/file.txt");
//创建一个字符缓冲输出流管道包装原始的字符输出流
BufferedWriter bw = new BufferedWriter(fw);
){
bw.write('a');
bw.write(97);
bw.write('始');
bw.newLine();
bw.write("题龙阳县青草湖");
bw.newLine();
}catch (Exception e){
e.printStackTrace();
}
}
}
运行后再查看file文件:
END
学习自:黑马程序员——Java课程