缓冲输入字符流_BufferedReader类

输入字符流:
----------------| Reader 用于读取字符流的抽象类。
------------------------| FileReader 用于读取文件的输入字符流
------------------------|  BufferedReader 缓冲输入字符流。目的是为了提高读取文件字符的效率和扩展了FileReader的功能。
                            其实该类内部也是维护了一个字符数组。
注意:缓冲流都不具备读写文件的能力。  
 
   
  1. package com.cn.buffered_RW;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. /**
  8. * Author:Liu Zhiyong(QQ:1012421396)
  9. * Version:Version_1
  10. * Date:2016年7月28日18:53:56
  11. * Desc:
  12. 输入字符流:
  13. ----------------| Reader 用于读取字符流的抽象类。
  14. ------------------------| FileReader 用于读取文件的输入字符流
  15. ------------------------| BufferedReader 缓冲输入字符流。目的是为了提高读取文件字符的效率和扩展了FileReader的功能。
  16. 其实该类内部也是维护了一个字符数组。
  17. 注意:缓冲流都不具备读写文件的能力。
  18. */
  19. public class Demo1 {
  20. public static void main(String[] args) throws IOException {
  21. //1.找到目标文件
  22. File file = new File("F:\\eclipseWorkspace20160629\\20160629093238\\src\\com\\cn\\reader\\Demo2.java");
  23. //2.建立数据输入通道
  24. FileReader fileReader = new FileReader(file);
  25. //3.建立缓冲输入字符流
  26. BufferedReader bufferedReader = new BufferedReader(fileReader);
  27. // bufferedReadTest1(bufferedReader);
  28. //读取全部文件数据
  29. String line = null;
  30. while((line = myReadLine(bufferedReader)) != null){//标记1处
  31. System.out.println(line);
  32. }
  33. }
  34. //模拟的readLin()
  35. public static String myReadLine(BufferedReader bufferedReader) throws IOException{
  36. StringBuilder sb = new StringBuilder();
  37. int content = 0;
  38. while((content = bufferedReader.read()) != -1){
  39. if(content == '\r'){// 回车 回车符就是回到一行的开头 '\r' = 13
  40. continue;//碰到\r 继续往下读
  41. }else if(content == '\n'){ // 换行 换行符就是另起一行'\r' = 10
  42. break; //若读到了\n就说明读完了
  43. }else{//普通字符
  44. sb.append((char)content);
  45. }
  46. }
  47. if(content == -1){//代表已经读取完毕, 为了能够读取全部文件数据
  48. return null;
  49. }
  50. return sb.toString();
  51. }
  52. // bufferedReader.read()方法 和 bufferedReader.readLine()方法
  53. public static void bufferedReadTest1(BufferedReader bufferedReader) throws IOException{
  54. //方式1
  55. /* int content = 0;
  56. while((content = bufferedReader.read()) != -1){//读到了一个字符。读取到的字符肯定也是从BufferedReader内部的字符组中获取到的。所以效率高。
  57. System.out.print((char)content);
  58. }*/
  59. //方式2
  60. /* String readLine = null;
  61. while((readLine = bufferedReader.readLine()) != null){//一次读一行
  62. System.out.println(readLine);
  63. // System.out.print(readLine); //readLine() 没有读到\r\n
  64. }*/
  65. //运用模拟的readLin()
  66. String data = myReadLine(bufferedReader);
  67. System.out.println(data);
  68. //4.关闭资源
  69. bufferedReader.close();
  70. }
  71. }

你可能感兴趣的:(javaSE,史上最全的JavaSE基础教程)