缓冲流07练习对文本的内容进行排序

32次阅读

共计 1213 个字符,预计需要花费 4 分钟才能阅读完成。

package com.itheima.demo01.BufferedStream;

import java.io.*;
import java.util.HashMap;

/*

练习:
    对文本的内容进行排序
    按照 (1,2,3....) 顺序排序
分析:
    1. 创建一个 HashMap 集合对象, 可以: 存储每行文本的序号(1,2,3,..);value: 存储每行的文本
    2. 创建字符缓冲输入流对象, 构造方法中绑定字符输入流
    3. 创建字符缓冲输出流对象, 构造方法中绑定字符输出流
    4. 使用字符缓冲输入流中的方法 readline, 逐行读取文本
    5. 对读取到的文本进行切割, 获取行中的序号和文本内容
    6. 把切割好的序号和文本的内容存储到 HashMap 集合中(key 序号是有序的, 会自动排序 1,2,3,4..)
    7. 遍历 HashMap 集合, 获取每一个键值对
    8. 把每一个键值对, 拼接为一个文本行
    9. 把拼接好的文本, 使用字符缓冲输出流中的方法 write, 写入到文件中
    10. 释放资源

*/
public class Demo05Test {

public static void main(String[] args) throws IOException {//1. 创建一个 HashMap 集合对象, 可以: 存储每行文本的序号(1,2,3,..);value: 存储每行的文本
    HashMap<String,String> map = new HashMap<>();
    //2. 创建字符缓冲输入流对象, 构造方法中绑定字符输入流
    BufferedReader br = new BufferedReader(new FileReader("10_IO\\in.txt"));
    //3. 创建字符缓冲输出流对象, 构造方法中绑定字符输出流
    BufferedWriter bw = new BufferedWriter(new FileWriter("10_IO\\out.txt"));
    //4. 使用字符缓冲输入流中的方法 readline, 逐行读取文本
    String line;
    while((line = br.readLine())!=null){
        //5. 对读取到的文本进行切割, 获取行中的序号和文本内容
        String[] arr = line.split("\\.");
        //6. 把切割好的序号和文本的内容存储到 HashMap 集合中(key 序号是有序的, 会自动排序 1,2,3,4..)
        map.put(arr[0],arr[1]);
    }

    //7. 遍历 HashMap 集合, 获取每一个键值对
    for(String key : map.keySet()){String value = map.get(key);
        //8. 把每一个键值对, 拼接为一个文本行
        line = key + "." + value;
        //9. 把拼接好的文本, 使用字符缓冲输出流中的方法 write, 写入到文件中
        bw.write(line);
        bw.newLine();// 写换行}
    //10. 释放资源
    bw.close();
    br.close();}

}

正文完
 0