https://www.bilibili.com/video/BV1ct411n7oG?p=183
BufferedReader和BufferedWriter提供了很多新增的方法,所以不要发生多态。
要用子类新的方法就不要发生多态的举例:https://blog.csdn.net/BOKEhhh/article/details/107654439
用多态也可以,但BufferedReader和BufferedWriter很多新增的便利的方法就不能用了。
BufferedReader 从字将输入流读取文本(注意,是纯文本),缓冲字符,以提供字符,数组和行的高效读取。
BufferedReader 的方法:
readLine方法是读一行文字,它的内部自动地去找换行符。
BufferedWriter 将文本写入字符输出流,纾冲字符,以提供单个字符,数组和字符串的高效写入。
BufferedWriter 的方法:
newLine方法写一个行分隔符。
使用BufferedReader的新增方法 readLine :
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
//1、创建源
File src = new File("abc.txt");//源头
//2、选择流
BufferedReader reader = null;//要用BufferedReader的新增方法,就不要使用多态
try {
reader = new BufferedReader(new FileReader(src));
//3、操作(分段读取)
String line = null;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//4、释放资源
try {
if(null != reader) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
输出结果:
IO is so easy!尚学堂
I LOVE JAVA!
readLine 如果没有接收到内容,就会返回null。
使用BufferedWriter的新增方法 newLine:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class TestDuoTai {
public static void main(String[] args) {
//1、创建源
File src = new File("dest.txt");//目的地
//2、选择流
BufferedWriter writer = null;//要用BufferedWriter的新增方法,就不要使用多态
try {
writer = new BufferedWriter(new FileWriter(src));
//3、操作(写出)
writer.append("Study Java!");
writer.newLine();
writer.append("尚学堂");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
//4、释放资源
try {
if(null != writer) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
输出结果:
用 BufferedReader 和 BufferedWriter 实现纯文本的拷贝:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
copy("abc.txt", "abc-copy.txt");
}
/**
* 用 BufferedReader 和 BufferedWriter 作纯文本的拷贝:
* @param srcPath 源头
* @param destPsth 目的地
*/
public static void copy(String srcPath, String destPsth) {
//1、创建源
File src = new File(srcPath);//源头
File dest = new File(destPsth);//目的地
//2、选择流
try(BufferedReader br = new BufferedReader(new FileReader(src));
BufferedWriter bw = new BufferedWriter(new FileWriter(dest))){
//3、操作(分段读取)
String line = null;
while((line = br.readLine()) != null) {
//逐行写出
bw.write(line);
bw.newLine();
}
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}