1 package com.itheima.demo01.BufferedStream;
 2 
 3 import java.io.*;
 4 import java.util.HashMap;
 5 
 6 /*
 7     练习:
 8         对文本的内容进行排序
 9         按照(1,2,3....)顺序排序
10     分析:
11         1.创建一个HashMap集合对象,可以:存储每行文本的序号(1,2,3,..);value:存储每行的文本
12         2.创建字符缓冲输入流对象,构造方法中绑定字符输入流
13         3.创建字符缓冲输出流对象,构造方法中绑定字符输出流
14         4.使用字符缓冲输入流中的方法readline,逐行读取文本
15         5.对读取到的文本进行切割,获取行中的序号和文本内容
16         6.把切割好的序号和文本的内容存储到HashMap集合中(key序号是有序的,会自动排序1,2,3,4..)
17         7.遍历HashMap集合,获取每一个键值对
18         8.把每一个键值对,拼接为一个文本行
19         9.把拼接好的文本,使用字符缓冲输出流中的方法write,写入到文件中
20         10.释放资源
21  */
22 public class Demo05Test {
23     public static void main(String[] args) throws IOException {
24         //1.创建一个HashMap集合对象,可以:存储每行文本的序号(1,2,3,..);value:存储每行的文本
25         HashMap<String,String> map = new HashMap<>();
26         //2.创建字符缓冲输入流对象,构造方法中绑定字符输入流
27         BufferedReader br = new BufferedReader(new FileReader("10_IO\\in.txt"));
28         //3.创建字符缓冲输出流对象,构造方法中绑定字符输出流
29         BufferedWriter bw = new BufferedWriter(new FileWriter("10_IO\\out.txt"));
30         //4.使用字符缓冲输入流中的方法readline,逐行读取文本
31         String line;
32         while((line = br.readLine())!=null){
33             //5.对读取到的文本进行切割,获取行中的序号和文本内容
34             String[] arr = line.split("\\.");
35             //6.把切割好的序号和文本的内容存储到HashMap集合中(key序号是有序的,会自动排序1,2,3,4..)
36             map.put(arr[0],arr[1]);
37         }
38 
39         //7.遍历HashMap集合,获取每一个键值对
40         for(String key : map.keySet()){
41             String value = map.get(key);
42             //8.把每一个键值对,拼接为一个文本行
43             line = key + "." + value;
44             //9.把拼接好的文本,使用字符缓冲输出流中的方法write,写入到文件中
45             bw.write(line);
46             bw.newLine();//写换行
47         }
48         //10.释放资源
49         bw.close();
50         br.close();
51     }
52 }

 

版权声明:本文为yhqtv-com原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yhqtv-com/p/12882017.html