系列文章目录
Java_IO——概述
Java_IO——字节流
Java_IO——字符流
Java_IO——缓冲流
Java_IO——属性集与转换流
Java_IO——序列化与反序列化、打印流
Java_IO——IO异常的处理
文章目录
前言
缓冲流是在基础流的基础上加强来的,相当是基础流的一种加强,也叫高效流
作用:在基础流上增加一个缓冲区(数组),可以提高数据处理的效率,一次可以处理一组数据
共有四种:
字节缓冲流
BufferedOutputStream(字节缓冲输出流,继承了OutputStream)
- 构造方法:
- BufferedOutputStream(OutputStream out)
创建一个新的缓冲输出流,以将数据写入指定的底层输出流 - BufferedOutputStream(OutputStream out,int size)
创建一个新的缓冲输出流,以将具有指定大小的缓冲区的数据写入指定的底层输出流 - 参数:
- OutputStream out:字节输出流
- int size:缓冲区大小,不指定则为默认大小
- BufferedOutputStream(OutputStream out)
使用:
- 创建一个FileOutputStream对象,构造方法中传递写入数据的目的地
- 创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象
- 使用Writer方法将数据写入到缓冲区中
- 使用flush方法将缓冲区中的数据刷新到文件中(可省略)
- 释放资源
package DemoBufferedStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo01BufferedOutputStream {
public static void main(String[] args) throws IOException {
//1.创建一个FileOutputStream对象,构造方法中传递写入数据的目的地
FileOutputStream fos = new FileOutputStream("D:\\***\\f.txt");
//2.创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象
BufferedOutputStream bos = new BufferedOutputStream(fos);
//3.使用Writer方法将数据写入到缓冲区中
bos.write("写入缓冲区".getBytes());
//4.使用flush方法将缓冲区中的数据刷新到文件中(可省略)
bos.flush();
//5.释放资源
bos.close();
}
}
BufferedInputStream(字节缓冲输入流继承了InputStream)
- 构造方法:
- BufferedInputStream(InputStream in)
创建一个新的缓冲输入流,以便将来使用 - BufferedInputStream(InputStream in,int size)
创建具有指定大小的缓冲区的一个新的缓冲输出流,并保存其参数 - 参数:
- InputStream in:字节输入流
- int size:缓冲区大小,不指定则为默认大小
- BufferedInputStream(InputStream in)
使用:
- 创建一个FileInputStream对象,构造方法中写要读取的目标
- 创建BufferedInputStream对象,构造方法中传递FileInputStream对象
- 使用read方法,读取文件
- 释放资源
package DemoBufferedStream;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class Demo02BufferedInputStream {
public static void main(String[] args) throws IOException {
//创建一个FileInputStream对象,构造方法中写要读取的目标
FileInputStream fis = new FileInputStream("D:\\***\\b.txt");
//创建BufferedInputStream对象,构造方法中传递FileInputStream对象
BufferedInputStream bis = new BufferedInputStream(fis);
//使用read方法,读取文件
int len = 0;
while ((len = bis.read()) != -1) {
System.out.println(len);
}
//释放资源
bis.close();
}
}
字符缓冲流
BufferedWriter (字符缓冲输出流继承了Writer)
- 构造方法:
- BufferedWriter(Writer out)
创建使用默认大小的输出缓冲区的缓冲字符输出流。 - BufferedWriter(Writer out,int sz)
创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。 - 参数:
- Writer out:字符输出流
- int sz:缓冲区大小
- BufferedWriter(Writer out)
- 特有方法:
- void newLine()
写入一个行分隔符,会根据不同的系统给出不同的分隔符
- void newLine()
使用:
- 创建BufferedWriter对象,构造方法中传递字符输出流
- 使用方法Write,把数据写到内存缓冲区中
- 使用flush方法将内存缓冲区中的数据,刷新到文件中
- 释放资源
package DemoBuffered;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Demo01BufferedWriter {
public static void main(String[] args) throws IOException {
//1)创建BufferedWriter对象,构造方法中传递字符输出流
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\***\\g.txt"));
//2)使用方法Write,把数据写到内存缓冲区中
for (int i = 0; i < 10; i++) {
bw.write("缓冲区");
// bw.write("\r\n");
bw.newLine();
}
//3)使用flush方法将内存缓冲区中的数据,刷新到文件中
bw.flush();
}
}
BufferedReader(字符缓冲输出流继承了Reader)
- 构造方法:
- BufferedReader(Reader in)
- 创建使用默认大小的输入缓冲区的缓冲字符输入流。
- BufferedReader(Reader in, int sz)
- 创建使用指定大小的输入缓冲区的缓冲字符输入流。
- 参数:
Reader in:字符输入流
int sz:缓冲区大小
- BufferedReader(Reader in)
- 特有方法:
- String readLine() 读取一个文本行
返回值:包含该行内容的字符串,不包含任何行终止符,如果以达到流末尾则返回null
- String readLine() 读取一个文本行
使用:
- 创建字符缓冲输入流对象,构造方法中传递字符输入流
- 使用方法read/readLine读取文本
- 释放资源
package DemoBuffered;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Demo02BufferedReader {
public static void main(String[] args) throws IOException {
//1)创建字符缓冲输入流对象,构造方法中传递字符输入流
BufferedReader br = new BufferedReader(new FileReader("D:\\***\\g.txt"));
//2)使用方法read/readLine读取文本
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
//3)释放资源
br.close();
}
}