字符缓冲流
字符流
字符缓冲流
- BufferedWriter:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途
- BufferedReader:从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。默认值足够大,可用于大多数用途
构造方法
BufferedWriter(Writer out)
BufferedReader(Reader in)
java
public class CopyJavaDemo03 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("test.java"));
BufferedWriter bw = new BufferedWriter(new FileWriter("copy03.java"));
// int ch;
// while ((ch= br.read())!=-1){
// bw.write(ch);
// }
char[] chs = new char[1024];
int len;
while ((len = br.read(chs)) != -1) {
bw.write(chs, 0, len);
}
bw.close();
br.close();
}
}
注意!!!!
BufferedWriter是缓冲输入流,意思是调用BufferedWriter的write方法时候。数据是先写入到缓冲区里,并没有直接写入到目的文件里。必须调用BufferedWriter的flush()方法。这个方法会刷新一下该缓冲流,也就是会把数据写入到目的文件里。或者你可以调用BufferedWriter的close()方法,该方法会在关闭该输入流之前先刷新一下该缓冲流。也会把数据写入到目的文件里
字符缓冲流的特有功能
BufferedWriter 中有一个功能void newLine():作用是写一个行分隔符,由系统属性定义,能适应不同的系统
BufferedReader中有一个功能==public String readLine()==作用是读一行文字,结果包含行的内容的字符串,不包括任何行终止字符,如果流的结尾已经到达,则为null
IO流小结
字节流
-
字节输入流
int read() 一次读取一个字节
int read(byte[] bys) 一次读取一个字节数组
InputStream是抽象类使用的是FileInputStream 和BufferedInputStream -
字节输出流
void write(int ch) 一次写一个字节
void write(byte[] bys,int index,int len) 一次写一个字节数组的一部分
OutputStream是抽象类使用的是FileOutputStream 和BufferedOutputStream
字节流可以复制任意文件数据,有4种方式一般采用字节缓冲流一次读写一个字节数组的方式
字符流
-
字符输入流Reader
int read() 一次读取一个字符
int read(char[] chs) 一次读取一个字符数组
Reader是抽象类使用的是InputStreamReader 和BufferedReader (有一个特有方法String readLine()) -
字符输出流Writer
void write(int ch) 一次写一个字符
void write(char[] chs,int index,int len) 一次写一个字符数组的一部分
Writer是抽象类使用的是OutputStreamWriter 和BufferedWriter (包含 void newLine() 写一个换行符和void write(String line) 一次写一个字符串)
由于命名太长,读文件的时候使用FileReader, 写文件的时候使用FileWriter,但是涉及到编码问题的时候只能用InputStreamReader和OutputStreamWriter
字符流只能复制文本数据,有5种方式,一般采用字符缓冲流的特有功能