BufferedReader
-
高级流
-
需要依托低级流(FileReader)
-
字符流
-
最简单的使用方法
@Test public void bufferedReaderWriterTest(){ try{ BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/BufferReaderTest.txt")); String line = null; //一行一行的读并打印到控制台 while ((line = bufferedReader.readLine()) != null){ System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } }
BufferedWriter
-
高级流
-
需要依托低级流(FileWriter)
-
字符流
-
最简单的使用方法
@Test public void bufferedWriterTest(){ try{ BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("E:/BufferedWriterTest.txt")); //写入数据 bufferedWriter.write("赵玉龙"); bufferedWriter.newLine(); bufferedWriter.write("123"); bufferedWriter.newLine(); bufferedWriter.write("ABC"); bufferedWriter.newLine(); //刷新缓冲区 bufferedWriter.flush(); //释放资源 bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } }
案例:对文件进行排序
-
通过HashMap排序
@Test public void fileSortByHashMap(){ try{ BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/出师表.txt")); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("E:/出师表_Sort.txt")); String line; Map<Integer, String> content = new HashMap<>(); //将文本读入到Map中 while ((line = bufferedReader.readLine()) != null){ Integer k = Integer.parseInt(line.split("\\.")[0]); String v =line.split("\\.")[1]; content.put(k,v); } //通过key将对应的value顺序写入文件中 for (int i = 1; i < 10 ; i++) { bufferedWriter.write(String.valueOf(i)); bufferedWriter.write(String.valueOf(content.get(i))); bufferedWriter.newLine(); } //刷新缓冲区 bufferedWriter.flush(); //释放资源 bufferedReader.close(); bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } }
-
通过TreeMap排序(利用TreeMap会按照key自动排序的特点)
@Test public void fileSortByTreeMap(){ try{ BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/出师表.txt") BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("E:/出师表_Sort. String line; Map<Integer, String> content = new TreeMap<>(); //将文本读入到Map中(TreeMap自动根据key值排序) while ((line = bufferedReader.readLine()) != null){ Integer k = Integer.parseInt(line.split("\\.")[0]); String v =line.split("\\.")[1]; content.put(k,v); } for (Map.Entry entry : content.entrySet()){ bufferedWriter.write(String.valueOf(entry.getKey()) bufferedWriter.write(String.valueOf(entry.getValue( bufferedWriter.newLine(); } bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } }