- 字节缓冲流:BufferedInputStream,BufferedOutputStream
- 字符缓冲流:BufferedReader,BufferedWriter
缓冲流的基本原理,是在创建流对象时,会创建⼀个内置的默认⼤⼩的缓冲区数组,通过缓冲区读写,减少系统IO次数,从⽽提⾼读写的效率。
字节缓冲流
字节缓冲流的构造方法
- public BufferedInputStream(InputStream in) :创建⼀个 新的缓冲输⼊流。
-
public BufferedOutputStream(OutputStreamout): 创建⼀个新的缓冲输出流。
构造举例:
// 创建字节缓冲输⼊流BufferedInputStream bis = newBufferedInputStream ( newFileInputStream ( "bis.txt" ));// 创建字节缓冲输出流BufferedOutputStream bos = newBufferedOutputStream ( newFileOutputStream ( "bos.txt" ));
代码:
public class Test05 {
public static void main(String[] args) throws IOException {
//缓冲流
// 使⽤⾼效字节流读写⼀个字节拷⻉⽂件
long start =System.currentTimeMillis();
// 创建字节输⼊流对象,关联数据源⽂件路径
BufferedInputStream br = new BufferedInputStream(new FileInputStream("C:\\Users\\25120\\IdeaProjects\\java\\3.txt"));
//创建字节输出流对象,关联数据源文件路径
BufferedOutputStream br2 =new BufferedOutputStream(new FileOutputStream("C:\\Users\\25120\\IdeaProjects\\java\\4.txt"));
//定义一个int类型的变量,用来存储取到的字节数据
int len;
//循环读取
while ((len = br.read())!=-1){
//在循环中,写出数据
br2.write(len);
}
br.close();
br2.close();
long end = System.currentTimeMillis();
System.out.println("总共需要:" + (end -start) + "毫秒");
}
}
注释:使用字节缓冲流可以更快的进行拷贝
字符缓冲流
字符缓冲流的构造方法
- public BufferedReader(Reader in) :创建⼀个 新的缓冲输⼊流
-
public BufferedWriter(Writer out) : 创建⼀个新的缓冲输出流
构造举例:
// 创建字符缓冲输⼊流BufferedReader br = new BufferedReader ( newFileReader ( "br.txt" ));// 创建字符缓冲输出流BufferedWriter bw = new BufferedWriter ( newFileWriter ( "bw.txt" ));
字符缓冲流的特有方法
字符缓冲流的基本⽅法与普通字符流调⽤⽅式⼀致,不再阐述,我们来看它们具备的特有⽅法。
- BufferedReader:public String readLine() : 读⼀⾏文字
-
BufferedWriter : public void newLine() : 写⼀⾏⾏分隔符, 由系统属性定义符号
public class Test06 {
public static void main(String[] args) throws IOException {
//字符缓冲流
//创建字符缓冲输入流
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\25120\\IdeaProjects\\java\\5.txt"));
//创建字符缓冲输出流
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\25120\\IdeaProjects\\java\\5.txt"));
//写入数据
bw.write("小王");
bw.newLine();
bw.write("小李");
bw.newLine();
bw.write("小张");
bw.newLine();
bw.close();
//定义一个String类型的变量,用来存储读取到的一行文字
String line;
while ((line = br.readLine())!=null) {
System.out.println(line);
}
br.close();
}
}