1. I/O流简介
-
IO流:I的全称是Input,O的全称是Output。表示读取,流可以看做是程序传输数据的通道。
-
作用:解决程序请求资源,输出资源的问题。
-
特性:流是一个管道,该管道具有先进先出的特性,最先写入的数据最先被读取到;并且必须顺序读取。
-
每一种流不能同时肩负输入,输出两种功能。必须单一的是输入流或者输出流。
2. 流的分类
-
按照流向分类,可以分为输出流和输出流。
1.1、输入流:从本地文件,网络资源等中获取资源到我们的程序中
1.2、输出流:从我们的程序中输出一些资源到本地等。
-
按照处理数据的单位来分类,可以分为字节流和字符流。
一个字节 = 8比特,一个字符 = 2字节。Java中不区分汉字和英文数字的区别都是一个字符占两个字节。C/C++语言中汉字是两个字节,英文数字是一个字节。
2.1、字节流:每次读或写一个字节,注意出现乱码问题。
2.2、字符流:每次读或写一个字符(两个字节),可以直接操作汉字。
-
按照功能来分类,可以分为处理流 和 辅助流。
3.1、节点流:具有实际读写传输数据功能的流。
3.2、 过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。
3. IO流常用到的五类一接口
IO包中最重要的就是五个类和一个接口,分别是指的是File、OutputStream、InputStream、Writer、Reader 和 Serializable序列化接口。
主要的类如下:
-
File(文件信息与管理):File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。
-
InputStream(二进制格式操作):抽象类,基于字节的输入流,是所有输入流的父类。定义了所有输入流都具有的共同特征。
-
OutputStream(二进制格式操作):抽象类。基于字节的输出流。是所有输出流的父类。定义了所有输出流都具有的共同特征。
-
Reader(文件格式操作):抽象类,基于字符的输入操作。
-
Writer(文件格式操作):抽象类,基于字符的输出操作。
-
RandomAccessFile(随机文件操作):一个独立的类,直接继承至Object.它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。