java IO操作概述
java IO操作概述
什么是流
流的本质是数据传输,数据有序集合,能从一个端传输到另一端的过程流
流的分类:
【1】按操作数据单位不同分为:字节流(8 bit),字符流(按字符),
1.什么是字节流?
字节流的基本单位为字节(Byte),一个字节通常为 8 位,它是用来处理二进制(数据)的。字节流有两个基类:InputStream(输入字节流)和 OutputStream(输出字节流)。
2.什么是字符流?
字符流的基本单位为 Unicode,大小为两个字节(Byte),它通常用来处理文本数据。字符流的两个基类:Reader(输入字符流)和 Writer(输出字符流)。
字符流的效率要比字节流的效率高,但为什么还要存在字节流操作了?
因为字节流操作在对二进制文件操作的,在对图片,声音,视频等文件的处理可以保证文件的正确性,而字符流操作对文本文件 的操作,两者的应用场景不同,
【2】按数据流的流向不同可分为:
流的方向流入与流出是相对程序来说的,如磁盘中的数据读入程序,程序中的数据保存至磁盘流出。
输入流:将数据从介质(磁盘,网络)到当前程序的传输称为输入流;
输出流:将数据从程序写入到存储介质中称为输出流;
输入流是以InputStream和Reader作为基类;
输出流是以OutputStream和Writer作为基类;
【3】按功能分类可分类为:
字节流:字节流是底层流,直接跟数据源相接的,
处理流:处理流[也叫包装流]可以消除不同节点流的实现差异,也可以提供更方便的方法完成输入输出。处理是对节点流的包装,它使用了修饰器设计模式,不会直接与数据源相连。为程序提供更为强大的读写功能,更加灵活执行IO操作,
处理流的功能主要提现:
1性能的提高:主要以增加缓冲的方式来提高输入输出的效率,
2操作的便捷:处理流提供了很多方法方便一次输入输出大批量的数据
BufferedRead与BuffereWrite 是操作字符流的包装类,不能去操作二进制文件
BufferedOutputStream与BufferedInputStream 是对二进制文件操作的处理流类
如:BufferedReader,BufferedWriter
【4】转换流
InputStreamReader 与 OutputStreamWriter, 注意看这两个类,看字面的理解它就是节点流Inputstream与字符流Reader的合并,
InputStreamReader是Reader的子类,它可以将InputStream字节流包装成(转换成)Reader字符流
OutputStreamWriter是Writer的子类,它可以将OutputStream字节流包装成(转换成)Writer字符流
通过转换流的处理可以将纯文本的数据使用字符流处理,这样效率更高,且转换流可以指定编码格式(GBK,uft-8...)
字符流 | 字节流 | |
输入流 | Reader(抽象基类) | InputStream(抽象基类) |
输出流 | Writer(抽象基类) | OutputStream(抽象基类) |
以下是Androidos.net为大家归纳的部分常用节点流与处理流的常用类
分类 | 字节输出流 | 字节输入流 | 字符输出流 | 字符输入流 | |
节点流 | 抽换基类 | OutputStream | InputStream | Reader | Writer |
文件操作 | FileOutputStream | FileInputStream | FileReader | FileWriter | |
字符串操作 | StringReader | StringWriter | |||
管道操作 | PipedOutputStream | PipedInputStream | PipedReader | PipedWriter | |
数组操作 | ByteArraOutputStream | ByteArrayInputStream | CharArrayReader | CharArrayWriter | |
处理流 | 抽象基类 | FilterOutputStream | FilterInputStream | FilterReader | FilterWriter |
缓冲流 | BufferedOutputStream | BufferedInputStream | BufferedReader | BufferedWriter | |
转换流 | InputStreamReader | OutputStreamWriter | |||
对象流 | ObjectOutputStream | ObjectInputStream | |||
打印流 | PrintStream | PrintWriter | |||
数据流 | DataOutputStream | DataInputStream |
RandomAccessFile类
该对象既可以对文件进行读操作,也能进行写操作,可以用于多线程下载或多个线程同时写数据到文件
关联知识链接:
评论