IO: input(读) output(写)
流:流动的是数据,从一端(程序)移动另一端(数据源),是抽象、动态的概念,是一连串连续动态的数据集合。
一切以程序为中心,进来叫输入,出去叫做输出。
数据源:data source。提供原始数据的媒介,常见的:数据库、文件、其他程序、内存、网络连接、IO设备。
流分类:
输入流:数据到程序(InputStream、Reader读进来)
输出流:程序到目的地(OutputStream、Writer写进去)
按功能:
节点流:可以直接从数据源或目的地读写数据
处理流:(包装流、装饰设计模式、装饰流) 不直接连接到数据源或目的地,是其他流进行封装。目的主要是简化操作和提高性能。
关系:
1.节点流处于IO操作的第一线,所有操作必须通过他们进行
2.处理流可以对其他流进行处理(提高效率和灵活性)
按数据:
字节流:按照字节读取数据(InputStream、OutputStream)
字符流:按照字符读取数据(Reader、Writer),因为文件编码的不同,从而有了对字符进行高效操作的字符流对象。原理:底层还是基于字节流进行操作,自动搜寻了指定的码表。
字符集:计算机只能看懂01,对其进行翻译
utf-8
gbk
Unicode
java.io包中最重要的5个类和3个接口
核心类:
File文件类
InputStream:字节输入流
OutputStream:字节输出流
Reader:字符输入流
Writer:字符输出流
接口:
Closeable:关闭流接口 释放资源
Flushable:刷新流接口 阻塞刷新
Serializable:序列化接口 存储对象
file:
字节流:数据以字节的方式存储,在计算机中以二进制存储。
字符流:中英文,直接操作字符的方式
CommonsIO:
File:文件和路径名的抽象表示
jvm ——> windows——>硬盘(file)
API > default
API有构造方法:
new 构造方法();
API没有构造方法:
1.工具类:Math(基本都是静态方法)
2.某一些静态方法返回了这个类的对象:Runtime(单例设计模式的实现)