Java IO——简介

一直搞不太懂java里的io问题,感觉java.io里面的类很多、很复杂而且很混乱,每次进行文件读写时都会费好多脑筋,
毕竟java里的文件读写是避免不了的=.=,写着写着自己也就明白了~

java io流的分类(两类)

1.根据数据流向分为:输入流和输出流,其中的“输入”和“输出”是相对于内存而言的;输入流用于把数据读取到内存中,输出流则相反。

2.根据数据单位分为:字节流和字符流,它们的区别如下:

  • 1). 字节流的基本单位是字节(8位),字符流的基本单位是Unicode码元(2个字节,16位);
  • 2). 字节流适用范围小,用于处理二进制数据或文本,字符流适用范围大,不仅能够处理文本数据,还能处理音频、图片等。
  • 3). 字节流默认不使用缓冲区,字符流使用缓冲区。

这里写图片描述

相应的,java.io中具有这4个重要的抽象类,在此基础上有很多子类。

\ 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

java io流的主要子类

字节流(派生关系):

这里写图片描述

字符流(派生关系):

这里写图片描述

1.读文件的一般步骤:

  • 创建文件对象:File file = new File(文件的路径);
  • 创建流对象:FileReader fr = new FileReader(file);
    根据java api,FileReader对象会使用默认的字符集和字节缓冲区大小:
  • 注1:如果需要使用缓冲区,则用FileReader对象构建一个BufferedReader对象:BufferedReader bf = new BufferedReader(fr);,可以使用指定输入缓冲区大小的构造函数,以指定缓冲区大小~
  • 注2:如果要进行转码,需要使用FileInputStream对象构建一个InputStreamReader对象来处理,即:FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis);,可以使用指定字符集的构造函数,以指定字符集~
  • 注3:如果即需要转码、又需要使用缓冲区的话,在注2的基础上,用InputStreamReader对象构造BufferedReader对象即可:BufferedReader bf = new BufferedReader(isr);
  • 读文件:read()readLine(),根据java api:
    int read():Reads a single character.
    String readLine():Reads a line of text.

2.写文件的一般步骤:同理~

实例链接: Java IO——文本增、删、查

参考链接:java使用IO读写文件总结Java API,感谢作者!

这里写图片描述

猜你喜欢

转载自blog.csdn.net/gxx_csdn/article/details/79069247
今日推荐