Java IO的原理 入门理解,input和output和java程序的关系
1.Java IO的原理
- IO流用来处理设备之间的数据传输
- Java程序中,对于数据的输入或者输出操作都是以“流(stream)”的方式来进行的
- java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输出或者输出数据
2.input和output的理解
- 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
- 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中
- 从网络中读取或者输出也是一样的概念
5.
3.IO流的分类
- 按操作数据单位不同分为:字节流(8bit),字符流(16bit)(处理文本文件)
- 按照数据流的流向不同分为:输入流,输出流
- 按流的角色不同分为:节点流(文件流–>直接作用于文件),处理流
(抽象基类) | 字符流 | 字节流 |
---|---|---|
输入流 | Reader | InputStream |
输出流 | Write | OutputStream |
- Java的IO流共涉及40多个类,实际上非常有规则和规律,都是从上表中的4个抽象基类派生的
- 由这4个类派生出来的子类名称都是以其父类名作为子类名的后缀
- 流的分类结构图,注:中间的矩形为一层包一层的。
4.IO流体系(蓝色为重点、常用)
5… InputStream 与 Reader的区别和注意点
- InputStream 和 Reader 是所有输入流的基类。
- InputStream(典型实现:FileInputStream)
int read()
int read(byte[] b)
int read(byte[] b, int off, int len) - Reader(典型实现:FileReader)
int read()
int read(char [] c)
int read(char [] c, int off, int len) - 程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
6.OutputStream 和Writer的注意点和区别
- OutputStream 和 Writer 也非常相似:
void write(int b/int c);
void write(byte[] b/char[] cbuf);
void write(byte[] b/char[] buff, int off, int len);
void flush();
void close(); 需要先刷新,再关闭此流 - 因为字符流直接以字符作为操作单位,所以 Writer 可以用字符串来替换字符数组,即以 String 对象作为参数
void write(String str);
void write(String str, int off, int len);
7.各种类型的IO流的用法
- 节点流(文件流) FileInputStream、FileOuputStrea、FileReader、FileWriter的用法(实现文件的复制)点击节点流用法
- 点击进入File类的用法
- 点击进入缓冲流,实现文件的复制和注意点
- 点击进入 JavaIO转换流的使用和注意点(实现字节流和字符流之间的转换)
- 点击进入 Java IO 处理流之:标准输入输出流
- 点击进入 Java IO 处理流之:打印流 和 数据流用法
- 点击进入 Java IO流 对象流的使用和序列化的注意点
- 点击进入 Java IO RandomAccessFile (随机访问流)类随机访问的使用细节详解