Java IO的原理 入门理解,input和output和java程序的关系
1.Java IO的原理
- IO流用来处理设备之间的数据传输
- Java程序中,对于数据的输入或者输出操作都是以“流(stream)”的方式来进行的
- java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输出或者输出数据
2.input和output的理解
- 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
- 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中
- 从网络中读取或者输出也是一样的概念
5.
3.IO流的分类
- 按操作数据单位不同分为:字节流(8bit),字符流(16bit)(处理文本文件)
- 按照数据流的流向不同分为:输入流,输出流
- 按流的角色不同分为:节点流(文件流–>直接作用于文件),处理流
- 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的用法(实现文件的复制)点击
- 点击进入
- 点击进入
- 点击进入
- 点击进入
- 点击进入
- 点击进入
- 点击进入