如果在每一行前面添加不同的空格,不会根据key值默认排序
/*源文件
2、创建FileInputStream对象,构造方法中绑定目的地(路径)
9、创建缓冲流对象BufferedInputStream,构造方法中传递上一步准备的FileInputStream对象,提高FileInputStream对象效率
3、使用BufferedInputStream对象中的read方法,把数据读取到缓冲区中
1、关闭FileIntputStream流对象,释放资源
6、创建FileOutputStream对象,构造方法中绑定目的地(路径)
4、创建缓冲流对象BufferedOutputStream,构造方法中传递上一步准备的FileOutputStream对象,提高FileOutputStream对象效率
7、使用BufferedOutputStream对象中的write方法,把数据写入到缓冲区中
8、使用flush方法将数据刷新到硬盘文件中
5、关闭FileOutputStream流对象,释放资源
*/
public static void main(String[] args) throws IOException {
//1、创建流对象,并创建文件
BufferedWriter bfw = new BufferedWriter(new FileWriter("pp.txt"));
BufferedReader bfr = new BufferedReader(new FileReader("p.txt"));
//2、不使用已有文件,在创建的文件中写入内容
/* bfw.write(" " +
" 2、创建FileInputStream对象,构造方法中绑定目的地(路径)\n" +
" 0、创建缓冲流对象BufferedInputStream,构造方法中传递上一步准备的FileInputStream对象,提高FileInputStream对象效率\n" +
" 3、使用BufferedInputStream对象中的read方法,把数据读取到缓冲区中\n" +
" 1、关闭FileIntputStream流对象,释放资源\n" +
" 6、创建FileOutputStream对象,构造方法中绑定目的地(路径)\n" +
" 4、创建缓冲流对象BufferedOutputStream,构造方法中传递上一步准备的FileOutputStream对象,提高FileOutputStream对象效率\n" +
" 7、使用BufferedOutputStream对象中的write方法,把数据写入到缓冲区中\n" +
" 8、使用flush方法将数据刷新到硬盘文件中\n" +
" 10、关闭FileOutputStream流对象,释放资源");
bfw.flush();*/
//3、写入完成,读取并将其分割后的第一个作为key,第二个内容作为value存储在HashMap中
String line;
HashMap<String, String> map = new HashMap<>();
while((line = bfr.readLine())!= null){
String[] split = line.split("\\、");
// System.out.println(split.length);
String num = split[0];
// System.out.println(split[0]+","+split[1]);
String content = split[1];
map.put(num,content);
}
//4、存储完成且HashMap是自动排序的,遍历即可,将序号和内容进行拼接组成新的字符串,再使用bfw.writer写入
for(String key : map.keySet()){
String value = map.get(key);
String newString = (key+"、"+value);
System.out.println(newString);
bfw.write(newString);
bfw.newLine();
}
bfr.close();
bfw.close();
}
遍历结果如图
在前面添加不同的空格数时,遍历的结果也不一样。