缓冲流:
比如:能高效的读写数据缓冲流,能转换编码的转换流,能持久化存储对象的序列化流等等,这些流都是在基本的流对象基础之上创建而来的,对基本的流进行增强
缓冲流也叫高效流,按照数据类型分类:
字节缓冲流:BufferedInputStream ,BufferedOutputStream
字符缓冲流:BufferedReader ,BufferedWriter
java.io.BufferedWriter extends Writer
字符缓冲输入流:
继承父类,共性成员方法:
void write(int c)写入单个字符
void write(char[]) 写入字符数组
abstract void writer(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 size)创建一个使用给定大小的输出缓冲区的新缓冲字符输出流
参数:
Writer out:字符输出流,我们可以传递FileWriter,缓冲区FileWriter增加一个缓冲区,提高FileWriter的写入效率
int size:指定缓冲区大,不写默认大小
特有成员方法:
void newLine() 写入一个行分隔符,会根据不同的操作系统,获取不同的行分隔符
换行符号:
Windows:\r\n
Linus:/n
Mac:/r
使用步骤:
1.创建一个字符缓冲输出流对象,构造方法中传递字符输出流
2.调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
3.调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
4.释放资源
package demo40字符缓冲输出流BufferedWriter;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/*
缓冲流:
比如:能高效的读写数据缓冲流,能转换编码的转换流,能持久化存储对象的序列化流等等,这些流都是在基本的流对象基础之上创建而来的,对基本的流进行增强
缓冲流也叫高效流,按照数据类型分类:
字节缓冲流:BufferedInputStream ,BufferedOutputStream
字符缓冲流:BufferedReader ,BufferedWriter
java.io.BufferedWriter extends Writer
字符缓冲输入流:
继承父类,共性成员方法:
void write(int c)写入单个字符
void write(char[]) 写入字符数组
abstract void writer(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 size)创建一个使用给定大小的输出缓冲区的新缓冲字符输出流
参数:
Writer out:字符输出流,我们可以传递FileWriter,缓冲区FileWriter增加一个缓冲区,提高FileWriter的写入效率
int size:指定缓冲区大,不写默认大小
特有成员方法:
void newLine() 写入一个行分隔符,会根据不同的操作系统,获取不同的行分隔符
换行符号:
Windows:\r\n
Linus:/n
Mac:/r
使用步骤:
1.创建一个字符缓冲输出流对象,构造方法中传递字符输出流
2.调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
3.调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
4.释放资源
*/
public class DemoBufferedWriter {
public static void main(String[] args) throws IOException {
//1.创建一个字符缓冲输出流对象,构造方法中传递字符输出流
BufferedWriter bw=new BufferedWriter(new FileWriter("E:\\多线程\\ee.txt"));
// 2.调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
for (int i=0;i<10;i++){
bw.write("传智播客");
bw.write("\r\n");//换行
bw.newLine();//换行
}
//3.调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
bw.flush();
//4.释放资源
bw.close();
}
}
运行:
java.ioBufferedReader extends Reader
继承父类的公共的成员方法:
int read() 读取单个字符
int read(char[] cbuf) 依次读取多个字符,将字符写入数组
void close() 关闭该流并释放与之关联的所有资源
构造方法:
BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的输入流
BufferedReader(Reader in ,int size)创建一个使用指定大小的输入缓冲区的缓冲字节输入流
参数:
Reader in:字符输入流,我们可以传递FileReadr,缓冲区会给FileReader增加一个缓冲区,提高FileReader的读取效率
特有成员方法:
String readLine()读取一行文本,行的终止符号:通过以下字符之一,即可认为某行已经终止:换行\n 、回车\r 或回车后直接跟着换行\r\n
返回值:包含行内容的字符串,不包含任何行终止符,如果已经达到末尾,则返回null
步骤:
1.创建一个字符缓冲输入流对象,构造方法中传递字符输入流
2.使用字符缓冲输入流对象中的方法read/readLine读取文本
3.释放资源
package demo41字符缓冲输入流BufferedReader;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
/*
java.ioBufferedReader extends Reader
继承父类的公共的成员方法:
int read() 读取单个字符
int read(char[] cbuf) 依次读取多个字符,将字符写入数组
void close() 关闭该流并释放与之关联的所有资源
构造方法:
BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的输入流
BufferedReader(Reader in ,int size)创建一个使用指定大小的输入缓冲区的缓冲字节输入流
参数:
Reader in:字符输入流,我们可以传递FileReadr,缓冲区会给FileReader增加一个缓冲区,提高FileReader的读取效率
特有成员方法:
String readLine()读取一行文本,行的终止符号:通过以下字符之一,即可认为某行已经终止:换行\n 、回车\r 或回车后直接跟着换行\r\n
返回值:包含行内容的字符串,不包含任何行终止符,如果已经达到末尾,则返回null
步骤:
1.创建一个字符缓冲输入流对象,构造方法中传递字符输入流
2.使用字符缓冲输入流对象中的方法read/readLine读取文本
3.释放资源
*/
public class DemoBufferedReader {
public static void main(String[] args) throws IOException {
//1.创建一个字符缓冲输入流对象,构造方法中传递字符输入流
BufferedReader br=new BufferedReader(new FileReader("E:\\多线程\\ee.txt"));
//2.使用字符缓冲输入流对象中的方法read/readLine读取文本
String line=br.readLine();
System.out.println(line);
line=br.readLine();
System.out.println(line);
line=br.readLine();
System.out.println(line);//只有有内容可以再次调用一直读取,知道null
/*
以上读取的过程是一个重复的过程,所以可以使用循环优化了,不知道文件中有多少行数据,所以使用while循环
while循环的结束条件,读取到null结束
*/
while((line=br.readLine())!=null){
System.out.println(line);
}
// 3.释放资源
br.close();
}
}
结果: