(1)需求
●把所给文章按照顺序进行恢复到一个新文件中
(2)分析
①定义一个缓存字符输入流管道与源文件接通。
②定义一个List集合存储读取的每行数据。
③定义一个循环按照行读取数据,存入到List集合中去。
④对List集合中的每行数据按照首字符编号升序排序。
⑤定义一个缓存字符输出管道与目标文件接通。
⑥遍历List集合中的每个元素,用缓冲输出管道写出并换行。
(3)具体实现
运行结果:
[六.君生日日说恩情,君死又随人去了。, 三.世人都晓神仙好,只有金银忘不了!, 四.终朝只恨聚无多,及到多时眼闭了。, 五.世人都晓神仙好,只有娇妻忘不了!, 八.痴心父母古来多,孝顺儿孙谁见了?, 二.古今将相在何方?荒冢一堆草没了。, 七.世人都晓神仙好,只有儿孙忘不了!, 一.世人都晓神仙好,惟有功名忘不了!]
[一.世人都晓神仙好,惟有功名忘不了!, 二.古今将相在何方?荒冢一堆草没了。, 三.世人都晓神仙好,只有金银忘不了!, 四.终朝只恨聚无多,及到多时眼闭了。, 五.世人都晓神仙好,只有娇妻忘不了!, 六.君生日日说恩情,君死又随人去了。, 七.世人都晓神仙好,只有儿孙忘不了!, 八.痴心父母古来多,孝顺儿孙谁见了?]
/**
目标:完成所给文章顺序的恢复,并存入到另一个新文件中去。
*/
public class Test {
public static void main(String[] args) {
try(
// 1、创建缓冲字符输入流管道与源文件接通
BufferedReader br = new BufferedReader(new FileReader("Summerday24\\HongLouMeng.txt"));
// 5、定义缓冲字符输出管道与目标文件接通
BufferedWriter bw = new BufferedWriter(new FileWriter("Summerday24\\NewHongLouMeng.txt"));
) {
// 2、定义一个List集合存储每行内容
List<String> data = new ArrayList<>();
// 3、定义循环,按照行读取文章
String line;
while ((line = br.readLine()) !=null){
data.add(line);
}
System.out.println(data);
// 4、排序
// 自定义排序规则
List<String> sizes = new ArrayList<>();
Collections.addAll(sizes,"一","二","三","四","五","六","七","八");
Collections.sort(data, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return sizes.indexOf(o1.substring(0,o1.indexOf(".")))
- sizes.indexOf(o2.substring(0,o2.indexOf(".")));
}
});
System.out.println(data);
// 6、遍历集合中的每行文章写出去,且要换行
for (String datum : data) {
bw.write(datum);
bw.newLine();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}