缓冲流(2)
使用缓冲流复制文件
步骤:
- 创建字节缓冲输入流对象,构造方法中传递字节输入流
- 创建字节缓冲输出流对象,构造方法中传递字节输出流
- 使用字节缓冲输入流对象中的方法read,读取文件
- 使用字节缓冲输出流的方法write,把读取的数据写入到内部缓冲区中
- 释放资源(会先把缓冲区中的数据,刷新到文件中)
代码演示:
package day9;
import java.io.*;
public class CopyFile {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\a\\b.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\a\\r.txt"));
byte[] bytes = new byte[1024];
int len = 0;
while((len = bis.read(bytes))!=-1){
bos.write(bytes,0,len);
}
bos.close();
bis.close();
}
}
BufferedWriter_字符缓冲输出流
java.io.BufferedWriter extends Writer
BufferedWriter:字符缓冲输出流
继承自父类的共性成员方法:
- void write(int c)写入单个字符
- void write(char[] cbuf)写入字符数组
- abstract void write(char[] cbuf,int off,int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
- void write(String str)写入字符串。
- void write(String str,int off,int len)写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
- void flush()刷新该流的缓冲。
- void close()关闭此流,但要先刷新它。
构造方法:
BufferedWriter(Writer out)创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out,int sz)创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
参数:
Writer out:字符输出流
我们可以传递FileWriter,缓冲流会给FileWriter增加一个缓冲区,提高FileWriter的写入效率。
int sz:指定缓冲区的大小,不写默认大小。
特有的成员方法:
void newLine()写入一个行分隔符,会根据不同的操作系统,获取不同的行分割符。
使用步骤(重点):
- 创建字符缓冲输出流对象,构造方法中传递字符输出流
- 调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
- 调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
- 释放资源
代码演示:
package day9;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWrite01 {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\a\\w.txt"));
for (int i = 0; i < 10; i++) {
bw.write("小明");
bw.newLine();
}
bw.flush();
bw.close();
}
}
BufferedReader_字符缓冲输入流
java.io.BufferedReader extends Reader
继承自父类的共性成员方法:
- int read()读取单个字符并返回
- int read(char[] cbuf)一次读取多个字符,将字符读入数组。
- void close()关闭该流并释放与之关联的所有资源
构造方法:
BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in,int sz)创建一个使用指定大小输入缓冲区的缓冲字符输入流。
参数:
Reader in:字符输入流
我们可以传递FileReader,缓冲流会给FileReader增加一个缓冲弄过去,提高FileReader的读取效率
特有的成员方法:
String readLine()读取一个文本行,读取一行数据
行的终止符号:通过下列字符之一即可认为某行已终止:韩航('\n')回车('\r')或回车后直接跟着换行(\r\n)。
返回值:
包含该行内容的字符串,不包含任何行中支付,如果已到达流末尾,则返回null。
使用步骤:
- 创建字符缓冲输入流对象,构造方法中传递字符输入流。
- 使用字符缓冲输入流一对象中的方法read/readLine读取文本
- 释放资源。
代码演示:
package day9;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReader01 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\\a\\w.txt"));
//一行一行的读
String line = br.readLine();
System.out.println(line);
//使用循环读取
// String line;
// while((line = br.readLine())!=null){
// System.out.println(line);
// }
br.close();
}
}