缓冲流
缓冲流的基本原理,实在创建流对象时,会创建一个内置默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写效率
按照数据类型分类:
字节缓冲流:BufferedInputStream,BufferedOutputStream
字符缓冲流:BufferedReader,BufferedWriter
1.1 字节缓冲流
构造方法
-
public BufferedInputStream(InputStream in)://创建一个新的缓冲输入流 public BufferedInputStream(InputStream in,int size)://创建一个指定缓冲区大小的BufferedInputStream并保存其参数,即输入流in,以便使用
-
public BufferedOutputStream(OutputSteam out)://创建一个新的缓冲输出流 public BufferedOutputStream(OutputSteam out,int size)://创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入到指定的底层传输
字节输出流使用步骤
1.创建FileOutputStieam,构造方法中绑定要输出的目的地
2.创建BufferedOutputStream对象,构造方法中传递FileOutputStieam对象。提高FileOutputStieam对象效率
3.使用BufferedOutputStream对象中的方法write,把数据写入到缓冲区中
4.使用BufferedOutputStream对象中的方法flush ,把内部缓冲区的数据刷新到文件中
5.释放资源(会先调用fulsh方法刷新数据,第四步可省略)
public class Demo01BufferedOutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fos=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\Study\\src\\com\\bainan\\io\\e.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
bos.write("我在写数据111".getBytes());
bos.close();
fos.close();
}
}
字节输入流使用步骤
- 创建FileInputStream对象,构造方法中绑定要读取的数据源
- 创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象的读取效率
- 使用BufferedInputStream对象中的read方法读取文件
- 释放资源
public class Demo01BufferedInputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\\Study\\src\\com\\bainan\\io\\e.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
byte[] bytes=new byte[1024];
int len=0;
while ((len=bis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
bis.close();
}
}
1.2 字符缓冲流
构造方法
-
public BufferedReader(Reader in)://创建一个使用默认大小输出缓冲区的缓冲字符输入流 public BufferedReader(Reader in,int sz )//创建一个指定缓冲区大小的缓冲字符输入流
-
public BufferedWriter(Writer out)//创建一个使用默认大小输出缓冲区的缓冲字符输出流 public BufferedWriter(Writer out,int sz )//创建一个指定缓冲区大小的缓冲字符输出流
字符输出流
特有的成员方法
void newLine()//写入一个行分隔符,会根据不同的操作系统,获取不同的行分隔符
使用步骤:
- 创建字符缓冲输出流对象,构造方法中传递字符输出流
- 调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
- 调用字符缓冲输出流中的方法flush,把内存缓冲区的数据,刷新到文件中
- 释放资源
public class Demo04BufferedWriter {
public static void main(String[] args) throws IOException {
BufferedWriter bw=new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\Desktop\\Study\\src\\com\\bainan\\io\\e.txt"));
for (int i = 0; i < 10; i++) {
bw.write("我来了BufferWriter");
bw.newLine();
}
bw.flush();
bw.close();
}
}
字符输入流
特有的成员方法
String readLine() //读取一个文本行。读取一行数据
//行的终止符号:通过下列字符之一即可认为某行已经终止:换行('\n')、回车('\r')或回车后直接跟着换行(\r\n)
//返回值:包含该行内容的字符串,不包含任何终止符号,如果已到达流末尾,则返回null
使用步骤:
- 创建字符缓冲输入流对象,构造方法中传递字符输出流
- 调用字符缓冲输入流中的方法read/readline,读取文本
- 释放资源
public class Demo03BufferedReader {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\Study\\src\\com\\bainan\\io\\e.txt"));
String line;
while ((line=br.readLine())!=null){
System.out.println(line);
}
br.close();
}
}