BufferedReader(处理流):从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
| 用法 | 解释 |
|---|---|
| void close() | 关闭该流并释放与之关联的所有资源。 |
| void mark(int readAheadLimit) | 标记流中的当前位置。 |
| boolean markSupported() | 判断此流是否支持 mark() 操作(它一定支持)。 |
| int read() | 读取单个字符。 |
| int read(char[] cbuf, int off, int len) | 将字符读入数组的某一部分。 |
| String readLine() | 读取一个文本行。 |
| boolean ready() | 判断此流是否已准备好被读取。 |
| void reset() | 将流重置到最新的标记。 |
| long skip(long n) | 跳过字符。 |
public class Demo9 {
//读取一个字符文件
public static void main(String[] args) throws IOException {
String filePath="D:/IOFile/news5.txt";
//创建BufferedReader,传一个FileReader对象
BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
String line;
//调用readline方法按行读取,效率高
//如果已到达流末尾,则返回 null 表示文件读取完毕
while ((line=bufferedReader.readLine())!=null){
System.out.println(line);
}
//关闭流,只需要关闭BufferedReader,虽然我们创建了节点流,
// 但是当我们关闭BufferedReader时,底层会调用我们传进来的节点流对象的close,从而关闭节点流
bufferedReader.close();
}
}
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
| 用法 | 解释 |
|---|---|
| void close() | 关闭此流,但要先刷新它。 |
| void flush() | 刷新该流的缓冲。 |
| void newLine() | 写入一个行分隔符。 |
| void write(char[] cbuf, int off, int len) | 写入字符数组的某一部分。 |
| void write(int c) | 写入单个字符。 |
| void write(String s, int off, int len) | 写入字符串的某一部分。 |
public class Demo10 {
public static void main(String[] args) throws IOException {
String filePath="D:/IOFile/news7.txt";
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath));
bufferedWriter.write("hello,");
bufferedWriter.write("world");
//换行
bufferedWriter.newLine();
bufferedWriter.write("hello,");
bufferedWriter.newLine();
bufferedWriter.write("world");
//追加写入
BufferedWriter bufferedWriter2 = new BufferedWriter(new FileWriter(filePath,true));
bufferedWriter2.write(123);
}
}
使用BufferedReader将需要拷贝的文件读取到程序,再使用BufferedWriter写入到指定的位置
public class Demo11 {
public static void main(String[] args) {
//Reader和Writer都是读取字符的,不能读取二进制文件(图片,视频,音频。。)
String fileReaderPath="D:/IOFile/news7.txt";
String fileWritePath="D:/IOFile/news/news7.txt";
BufferedReader bufferedReader=null;
BufferedWriter bufferedWriter=null;
String line;
try {
bufferedReader = new BufferedReader(new FileReader(fileReaderPath));
bufferedWriter = new BufferedWriter(new FileWriter(fileWritePath));
while ((line=bufferedReader.readLine())!=null){
//readLine是一行一行的进行读取但是读取之后是不会自动换行的,所以我们需要调用newLine
bufferedWriter.write(line);
bufferedWriter.newLine();
}
System.out.println("字符文件拷贝成功");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader!=null){
bufferedReader.close();
}
if (bufferedWriter!=null){
bufferedWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}