BufferedReader / BufferedWriter 是缓冲字符输入 / 输出流。缓冲区默认8192字节,当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。
BufferedReader的构造方法:
public BufferedReader(Reader in, int sz) 通过Reader 构造一个BufferedReader,sz:指定缓冲区大小 |
public BufferedReader(Reader in) 通过Reader 构造一个BufferedReader |
方法:
public int read() 读取一个字节 |
public int read1(char[] cbuf, int off, int len) 将字符读入数组的某一部分。 |
public String readLine() 读取一行 |
public long skip(long n) 跳过字符 |
public boolean ready() 判断此流是否已准备好被读取。。如果缓冲区不是空的,则流已准备就绪。 |
public boolean markSupported() 在此做标记。 |
public void mark(int readAheadLimit) 设置担保位数,如果超过担保数,则无法复位。 |
public void reset() 将流重置为最新的标记。 |
public void close() 关闭流。 |
public Stream<String> lines() |
1.8 Stream<String>对象 Stream:java1.8新特性。 |
备注:关于Stream
BufferedWriter的构造方法:
public BufferedWriter(Writer out) 创建一个使用默认大小的缓冲字符输出流。 |
public BufferedWriter(Writer out, int sz) 创建一个使用输出的新缓冲字符输出流 |
方法:
public void write(char cbuf[], int off, int len) 写入字符数组的一部分。 |
public void write(int c) 写入字符串 |
public void write(String s, int off, int len) 写入字符的一部分 |
public void newLine() 写入一行 |
public void flush() 写入缓冲区 |
public void close() 关闭流 |
copy:
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream("C:\\Users\\Mr.wang\\Desktop\\单词\\AccessTest\\Access.txt")));
/*BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));*/
/*BufferedReader br = new BufferedReader(
new FileReader("C:\\\\Users\\\\Mr.wang\\\\Desktop\\\\单词\\\\AccessTest\\\\Access.txt\"))"));*/
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("C:\\Users\\Mr.wang\\Desktop\\单词\\AccessTest\\AccessTest2.txt")));
/*PrintWriter pw = new PrintWriter("C:\\\\Users\\\\Mr.wang\\\\Desktop\\\\单词\\\\AccessTest\\\\AccessTest2.txt");*/
Stream<String> s = br.lines();
Object[] S = s.toArray();
for(Object a:S) {
System.out.println(a);
}
/*String lins = null;
while((lins=br.readLine()) != null) {
System.out.println(lins);
bw.write(lins);
bw.newLine(); //换行
bw.flush();
* pw.println(); //BufferedWriter 换行
pw.write(lins);
pw.flush();
}*/
}