FileReader相关方法:

  1. new FileReader(File/String)
  2. read:每次读取单个字符,返回该字符,如果到文件末尾返回-1
  3. read(char[]):批量读取多个字符到数组,返回读取到的字符数,如果到文件末尾返回-1

相关API:

  1. new String(char[]):将char[]转换成String
  2. new String(char[], off,len):将char[]的指定部分转换成String

    案例:

    使用FileReader 从a.txt 读取内容,并显示 ```java package test;

import org.junit.Test;

import java.io.FileReader; import java.io.IOException;

public class Main { public static void main(String[] args) { Main main = new Main(); main.readFile01(); main.readFile02(); }

  1. /**
  2. * 单个字符读取文件
  3. */
  4. @Test
  5. public void readFile01() {
  6. System.out.println("~~~readFile01 ~~~");
  7. String filePath = "D:\\a.txt";
  8. FileReader fileReader = null;
  9. int data = 0;
  10. //1. 创建FileReader对象
  11. try {
  12. fileReader = new FileReader(filePath);
  13. //循环读取 使用read, 单个字符读取
  14. while ((data = fileReader.read()) != -1) {
  15. System.out.print((char) data);
  16. }
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. } finally {
  20. try {
  21. if (fileReader != null) {
  22. fileReader.close();
  23. }
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  29. /**
  30. * 字符数组读取文件
  31. */
  32. @Test
  33. public void readFile02() {
  34. System.out.println("~~~readFile02 ~~~");
  35. String filePath = "D:\\a.txt";
  36. FileReader fileReader = null;
  37. int readLen = 0;
  38. char[] buf = new char[1024];
  39. //1. 创建FileReader对象
  40. try {
  41. fileReader = new FileReader(filePath);
  42. //循环读取 使用read(buf), 返回的是实际读取到的字符数
  43. //如果返回-1, 说明到文件结束
  44. while ((readLen = fileReader.read(buf)) != -1) {
  45. System.out.print(new String(buf, 0, readLen));
  46. }
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. } finally {
  50. try {
  51. if (fileReader != null) {
  52. fileReader.close();
  53. }
  54. } catch (IOException e) {
  55. e.printStackTrace();
  56. }
  57. }
  58. }

} ``` image.png