java基础io流的分类
2016-02-24 10:14
309 查看
初步认识io流整体框架和分类,无具体用法
下面的分类中,我们把IO进行三种类别划分。
1)输入流和输出流所谓IO即输入输出,输入是对数据进行“读(read)”操作,从外存读到内存中,谓之“入”;输出是对数据进行“写(write)”操作,从内存写到外存,谓之“出”。从输入输出这个角度,可以将IO类分为两大类,即输入流和输出流,输入流定义了读数据的方法,输出流定义了写数据的方法。IO中所有输入流都是InputStream类或者Reader类的子类。凡是类名以InputStream结尾的类都是InputStream的子类,如FileInputStream等。同样的,凡是类名以Reader结尾的类都是Reader类的子类,如FileReader等。IO中所有输出流都是OutputStream或者Writer类的子类。凡是类名以OutputStream结尾的类都是OutputStream的子类,如FileOutputStream等。同样的,凡是类名以Writer结尾的类都是Writer类的子类,如FileWriter等。
2)字节流和字符流IO流进行数据输入输出操作时,编码格式有8位的字节和16位的字符两种。所以从数据流编码格式角度划分,IO流类又可以分为字节流和字符流两大类。InputStream和OutputStream的子类都是字节流,都将数据按照8位的字节方式传输,往往应用于视频、音频等文件的读写。Reader和Writer的子类都是字符流,都将数据按照16位的字符方式传输,往往用于文本文件的读写,尤其包含汉字的文件,必须使用字符流读写。
3)节点流和过滤流要使用IO流类进行数据输入输出操作,必须先创建IO流类的对象。而创建IO流对象,必须使用IO流类的构造方法。下面比较两个字符输入流FileReader和BufferedReader的构造方法:
(1)public FileReader(File file):FileReader类的构造方法参数是File类型,也就是说FileReader对象直接封装File对象。
(2)public BufferedReader(Reader in):BufferedReader类的构造方法参数是Reader类型对象,也就是说BufferedReader可以封装任意一种Reader类型对象,如FileReader、StringReader等。
通过上面构造方法的比较可见,FileReader类直接封装数据源,这样的流类称为节点流,如StringReader、CharArrayReader都是节点流,都直接封装某种特定类型的数据源。而BufferedReader类封装的是流对象,而不是特定类型的数据源,称为过滤流。节点流是输入输出时必须使用的类,用来将数据源转换成IO对象。而过滤流用来封装流对象,往往用来增强其他流对象的功能,起到的是“锦上添花”的作用。通过对IO流类进行不同角度的分类,读者可以快速了解IO包的结构。IO包中主要有4个顶级抽象类,即InputStream、OutputStream、Reader、Writer。它们的子类分别是字节输入流、字节输出流、字符输入流、字符输出流。而根据封装类型的不同,流又可以分为节点流和过滤流。如果流封装的是某种特定的数据源,如文件、字符串、字符数组等,则称为节点流,如果流封装的是其他流对象,称为过滤流。
文章摘自android长沙吧http://tieba.baidu.com/p/4255459344
下面的分类中,我们把IO进行三种类别划分。
1)输入流和输出流所谓IO即输入输出,输入是对数据进行“读(read)”操作,从外存读到内存中,谓之“入”;输出是对数据进行“写(write)”操作,从内存写到外存,谓之“出”。从输入输出这个角度,可以将IO类分为两大类,即输入流和输出流,输入流定义了读数据的方法,输出流定义了写数据的方法。IO中所有输入流都是InputStream类或者Reader类的子类。凡是类名以InputStream结尾的类都是InputStream的子类,如FileInputStream等。同样的,凡是类名以Reader结尾的类都是Reader类的子类,如FileReader等。IO中所有输出流都是OutputStream或者Writer类的子类。凡是类名以OutputStream结尾的类都是OutputStream的子类,如FileOutputStream等。同样的,凡是类名以Writer结尾的类都是Writer类的子类,如FileWriter等。
2)字节流和字符流IO流进行数据输入输出操作时,编码格式有8位的字节和16位的字符两种。所以从数据流编码格式角度划分,IO流类又可以分为字节流和字符流两大类。InputStream和OutputStream的子类都是字节流,都将数据按照8位的字节方式传输,往往应用于视频、音频等文件的读写。Reader和Writer的子类都是字符流,都将数据按照16位的字符方式传输,往往用于文本文件的读写,尤其包含汉字的文件,必须使用字符流读写。
3)节点流和过滤流要使用IO流类进行数据输入输出操作,必须先创建IO流类的对象。而创建IO流对象,必须使用IO流类的构造方法。下面比较两个字符输入流FileReader和BufferedReader的构造方法:
(1)public FileReader(File file):FileReader类的构造方法参数是File类型,也就是说FileReader对象直接封装File对象。
(2)public BufferedReader(Reader in):BufferedReader类的构造方法参数是Reader类型对象,也就是说BufferedReader可以封装任意一种Reader类型对象,如FileReader、StringReader等。
通过上面构造方法的比较可见,FileReader类直接封装数据源,这样的流类称为节点流,如StringReader、CharArrayReader都是节点流,都直接封装某种特定类型的数据源。而BufferedReader类封装的是流对象,而不是特定类型的数据源,称为过滤流。节点流是输入输出时必须使用的类,用来将数据源转换成IO对象。而过滤流用来封装流对象,往往用来增强其他流对象的功能,起到的是“锦上添花”的作用。通过对IO流类进行不同角度的分类,读者可以快速了解IO包的结构。IO包中主要有4个顶级抽象类,即InputStream、OutputStream、Reader、Writer。它们的子类分别是字节输入流、字节输出流、字符输入流、字符输出流。而根据封装类型的不同,流又可以分为节点流和过滤流。如果流封装的是某种特定的数据源,如文件、字符串、字符数组等,则称为节点流,如果流封装的是其他流对象,称为过滤流。
文章摘自android长沙吧http://tieba.baidu.com/p/4255459344
相关文章推荐
- Eclipse导入EPF配置文件
- 初识 Java 线程池
- Android入门之使用eclipse进行源码开发的方法
- Java中Comparable和Comparator实现对象比较
- myeclipse8.5 普通项目转换为web项目
- Android 启动 eclipse 错误:找不到元素‘d:devices'的声明
- 阿里云部署Java web项目初体验
- Spring MVC入门
- JDK环境变量配置
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
- 给Eclipse提速的7个技巧
- Service的一个小例子
- 在Springmvc中获取properties属性
- JDk根目录 4000 下文件内容
- spring框架读取配置文件信息
- Java中实现Comparable和Comparator对象比较
- Spring的aop介绍
- Eclipse web项目断点调试
- JAVASE基础 Item -- File类详解
- NDK开发之Eclipse环境配置