目的是将文件按照 “ . ” 前面的数字对段落进行排序
思路
数据结构选HashMap
用java IO自带的字符缓冲流
操作步骤:
1.先创建BufferedReader和BufferedWriter对象
2.用readLine()方法获取一个字符串,规则是\n或\r或\n\r为止
3.分割字符串为 "."前数字一部分 "."后内容一部分
4.存入HashMap,
5.遍历HashMap中的键,用此找到value
6.合并,写入目标文件
先看一下最初的文件
Code
package TestFile;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
public class sortx {
public static void main(String[] args) throws IOException {
//抛io异常
HashMap<String,String> m = new HashMap<>();
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\30978\\Desktop\\1.txt"),1024); //参数传递字符输入流和大小
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\30978\\Desktop\\2.txt"),1024); //参数传递字符输出流和大小
String str;
while((str = br.readLine())!=null) {
String[] strs = str.split("\\."); //用.分开
m.put(strs[0], strs[1]);
}
for(String a:m.keySet()) {
//遍历key找到value
String value = m.get(a);
str = a+"."+value; //合并存入
bw.write(str);
bw.newLine(); //这个是换行
}
//释放资源
bw.close();
br.close();
}
}
结果:
????
问题来了,我们没有进行sort一类的操作,怎么就有序了呢?
查一下JDK发现 HashMap的底层是一种似“桶”的结构
所有就会自动“排序”,想了解桶是什么可以百度一下桶排序。
.newLine();
换行是怎么回事呢 可以找一下…println();的源码