1.IO流的介绍
IO流,I代表input--输入,O代表output--输出,流代表数据,在计算机中以字节存储,这里的流就是字节流。
但是我们平时使用的是英文/数字/汉语,这些都是字符,我们也可以直接操作字符,就是字符流。
流:流动,流向,从一端流向另一端。在计算机中,就是在程序和数据源(存储数据介质的地方)中间的管道,这个管道就是IO流。
IO流是抽象、动态的概念,是一连串连续动态的数据集合。
数据源:提供原始数据的原始媒介,例:数据库、文件、其他程序、内存、网络连接、IO设备。
IO流中永远把程序看作中心,进来就是输入流,出去就是输出流
在整个java.io包中最重要的就是5个类和3个接口
1.File:文件类
2.InputStream:字节输入流
3.OutputStream:字节输出流
4.Reader:字符输入流
5.Writer:字符输出流
6.Closeable:关闭流接口
7.Flushable:刷新流接口
8.Serializable:序列化接口
2.流分类
1.流分类(按流向分类):
输入流:数据源到程序(InputStream、Reader读进来)
输出流:程序到目的地(OutputStream、Writer写进来)
数据源➡程序(输入流➡中转站➡输出流)➡目标位置
2.流分类(按功能分类):
节点流:可以直接从数据源或者目的地直接读写数据
处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装。目的是简化操作和提高性能。
节点流和处理流关系:
1.节点流处于io操作一线,所有操做必须通过他们进行
2.处理流可以对其它流进行处理。
3.流分类(按数据分类)
1.字节流:按照字节读取数据
2.字符流:按照字符读取数据,因为文件编码不同,从而有了对字符进行高效操作的字符流对象
字符流原理:底层还是基于字节流,自动搜寻了指定的码表。
3.File类的构建
File是文件和目录路径名的抽象表示
1.文件路径名的书写
在windows中路径名由分割,而java程序不一定都在windows上运行,可能会不识别分隔符
所以统一使用/作为名称分隔符,或者使用\作为分隔符,\是/的转义字符。
例:
2.构建file类
构造器的参数可以直接为文件路径
也可以有两个参数,第一个参数是文件父类路径,第二个参数为文件名。
或者第一个是文件父类路径的对象,第二个参数是文件名
例:
3.相对路径和绝对路径
文件路径分为相对路径和绝对路径
绝对路径存在盘符,相对路径不存在盘符,一般相对路径都相对与当前工程文件(user.dir)
注:一般都用相对路径,因为绝对路径是依附于电脑上的,不稳定存在。
例: