Java IO

Java IO中常用的类

IO主要类.webp

整个java.io包中最重要的就是五个类和一个接口。五个类是指:File、OutputStream、InputStream、Writer、Reader;一个接口是指Serializable

java I/O主要包含三个部分:

1.流式部分—IO的主体部分;

2.非流式部分—主要包含一些辅助流式部分的类,如:File类、RandomAccessFile类和FileDescriptor类

3.其他类—文件读取部分的与安全相关的类,如:SerializablePermission类,以及与本地操作系统相关的文件系统类,如:FileSystem类和Win

32FileSystem类和WinNTFileSystem类

主要的类如下

  1. File(文件特征与管理):用于文件或者目录的描述信息,例如:生成新目录,修改文件名,删除文件,判断文件所在路径等。

  2. InputStream(二进制格式操作)抽象类,基于字节的输入,是所有输入流的父类。

  3. OutputStream(二进制格式操作)抽象类,基于字节的输出,是所有输出流的父类。

  4. Reader(文件格式操作):抽象类,基于字符的输入

  5. Writer(文件格式操作):抽象类,基于字符的输出

  6. RandomAccessFile(随机文件操作):一个独立的类,直接继承Object,功能丰富,可以从文件的任意位置进行存取(输入输出)操作。

IO体系图.webp

IO流全类图.webp

字节流和字符流的区别

字节流没有缓冲区,是直接输出的,而字符流是输出到缓冲区的。因此在输出时,字节流不调用close()方法时,信息已经输出了,而字符流只有在调用close()方法关闭缓冲区时,信息才输出。要想字符流在未关闭时输出信息,则需要手动调用flush()方法。

读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

结论:只要是处理纯文本数据,就优先考虑使用字符流。除此之外都使用字节流。