BufferedReader_字符缓冲输入流和练习_对文本的内容进行排序
BufferedReader_字符缓冲输入流
java.io.BufferedReader extends Reader
构造方法:
BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。
参数:
Reader in:字符输入流
我们可以传递FileReader,缓冲流会给FileReader增加一个缓冲区,提高FileReader的读取效率
特有的成员方法:
String readLine() 读取一个文本行。读取一行数据
行的终止符号:通过下列字符之一即可认为某行已终止:换行('\n')、回车('\r') 或回车后直接跟着换行(\r\n).
返回值:
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾, 则返回 null
private static void show08() throws IOException { //创建字符缓冲输入流对象,构造方法中传递字符输入流 BufferedReader reader = new BufferedReader(new FileReader("F:\\a9.txt")); //使用字符缓冲输入流对象中的方法read/readLine读取文本 String len; while ((len=reader.readLine())!=null){ System.out.println(len); } reader.close(); }
练习_对文本的内容进行排序
private static void show09() throws IOException { //创建一个HashMap集合对象, 可以:存储每行文本的序号(1,2,3,...); value :存储每行的文本 HashMap<String,String> map = new HashMap<>(); //创建字符缓冲输入流对象,构造方法中绑定字符输入流 BufferedReader br = new BufferedReader(new FileReader("F:\\a9.txt")); //创建字符缓冲输出流对象,构造方法中绑定字符输出流 BufferedWriter bw = new BufferedWriter(new FileWriter("F:\\a9.txt")); //使用字符缓冲输入流中的方法readline,逐行读取文本 String line; while ((line = br.readLine())!=null){ //对读取到的文本进行切割,获取行中的序号和文本内容 String[] arr = line.split("\\."); //把切割好的序号和文本的内容存储到HashMap集合中(key序号是有序的,会自动排序1,2,3,4...) map.put(arr[0],arr[1]); } //遍历HashMap集合,获取每一个键值对 for (String key : map.keySet()){ String value = map.get(key); line = key+"."+value; bw.write(line); bw.newLine(); } bw.close(); br.close(); }
排序好的: