Java的IO通过java.io包中的包和接口来支持,在java.io包中主要包括输入、输出两种IO流,每种输入与输出流又可以分为字节流
和字符流
两大类。
1 File类
File类是java.io包中代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录都可以通过File来完成。但是不能操作文件的内容,你需要使用流来完成。
2 IO Stream
stream是从起源(source)到接收(sink)的有序数据。
Java中输入流主要由InputStream和Reader作为基类,而输出流则主要由OutputStream和Writer作为基类。它们都是一些抽象基类,无法直接创建实例。
2.1 字节流与字符流
- 字节流 - 操作的数据单元是
8位
的字节 - 字符流 - 操作的数据单元是
16位
的字符
2.2 流的概念和模型
Java把所有设备里的有序数据抽象成流模型。
以InputStream和Reader为例,它们把输入设备抽象成一个可以不断放出“水滴”的水管,每个水滴依次排列,每个水滴就是InputStream和Reader所要操作的基本单元。
输入流通过一个隐式指针来记录当前正准备处理哪个水滴。InputStream和Reader都提供了一些可以控制指针移动的方法。
OutputStream和Writer也是类似的,只不过这个水管一开始是没有水滴的,程序不断输出水滴到水管。同样也存在一个隐式指针来指示水管中即将注入水滴的位置。