IO流的体系
字节缓冲流的作用
提高字节流读取数据的性能
*原理:字节缓冲输入流自带了8Kb的缓冲池,字节缓冲输出流也自带了8kb的缓冲池
构造器 | 说明 |
public BufferedInputStream(InputStream is) | 把低级的字节输入流包装成一个高级的缓冲字节输入流,从而提高读数据的性能 |
public BufferedOutputStream(OutputStream os) | 把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能 |
import java.io.*;
public class BufferedInputStream1 {
public static void main(String[] args) {
//使用字节流完成对文件的复制操作
//需求:复制照片
//创建一个文件字节输入流管道和源文件接通
try (InputStream is = new FileInputStream("G:\\heima1\\新建文件夹");
//定义一个字节缓冲输入流来包装原始的字节输入流
InputStream bis=new BufferedInputStream(is);
OutputStream os = new FileOutputStream("F:\\My Java\\图片\\新建文件夹");
//定义一个字节缓冲输出流来包装原始的字节输出流
OutputStream bos= new BufferedOutputStream(os);
){
//创建一个字节数组,负责转移字节数据
byte[]bytes=new byte[1024];
//从字节输入流中读取字节数据,再写到字节输出流中去,读多少写出去多少
int len;//记住每次读取了多少个字节
while ((len=bis.read(bytes))!=-1){
bos.write(bytes,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("复制完成");
}
}
BufferedReader(字符缓冲输出流)
构造器 | 说明 |
public BufferedReader(Reader r) | 把低等字符输入流包装成字符输入流管道,从而提高字符输入流读字符数据的性能 |
字符缓冲输入流新增的功能:按照行读取字符
方法 | 说明 |
public String readLine() | 读取一行数据返回,如果没有数据返回了,会返回null |
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Reader;
public class BufferedReader1 {
public static void main(String[] args) {
//1、创建一个文件字符输入流,每次读取一个字符
try (Reader rd= new FileReader("D:\\code\\weilai1\\src\\itheima1.txt");
){
BufferedReader br=new BufferedReader(rd);
// char []chars=new char[3];
// int len;
//while((len= br.read(chars))!=-1){
// String str=new String(chars);
// System.out.print(str);
// }
String line;//记住每次读取的一行数据
while((line=br.readLine())!=null){
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
BufferedWriter(字符缓冲输出流)
作用:自带8K的字符缓冲池,可以提高字符输出流写字符数据的性能。
构造器 | 说明 |
public BufferedWiriter(Writer r) | 把低级的字符输出流包装成一个高级的缓冲字符输出流管道,从而提高字符输出流写数据的性能 |
字符缓冲输出流新增的功能:换行
方法 | 说明 |
public void newLine() | 换行 |
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriter1 {
public static void main(String[] args) {
try (FileWriter fw=new FileWriter("D:\\code\\weilai1\\src\\itheima1.txt",true);){
BufferedWriter bw=new BufferedWriter(fw);
// void write(int c)
bw.write('b');
bw.write('类');
bw.write(97);
bw.newLine();//换行
//void write(String str)
bw.write("你好,中国");
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
}