IO

在这里插入图片描述
IO

概述:具有流质和方向的抽象概念
特点:
流质(数据)
方向(输入或输出)
作用:应用程序和外部数据交互
分类:
1.按照方向:
输入流 Inputstream(将数据从文件往程序内部拿)输入流都继承抽象类Inputstream或Reader;
输出流 Outputstream(将数据从程序内部往外部拿)都继承抽象类Outpunstream或Writer
2.按照数据的最小传输单位
字节流:继承抽象类Inputstream或Outputstream
字符流: 继承抽象类Reader或Writer,用于处理文本文件,Reader类可以将数据源中采用其它编码类型的字符转换为Unicode字符,然后在内存中为这些Unicode字符分配内存;Writer类能够把内存中的Unicode字符转换为其它编码类型的字符,再写到数据目的地。Reader和Writer会在本地操作系统平台默认字符编码和Unicode编码之间进行转换。对于中文操作系统平台,默认的字符编码通常为“GBK”。
3.按照功能
低级流(节点流):
直接从/向一个特定的数据源(例如磁盘文件、内存、网络)读/写数据的流,低级流又分为低级字节流和低级字符流
高级流(处理流):
处理流不直接连接到设备,而是连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更强大的读写功能,高级流又分为高级字节流和高级字符流;
高级字节流包括:数据流(DateInputStream/DateOutputStream)过滤流
(BufferedInputStream/BufferedOutputStream)字节打印输出流(PrintStream),字节打印输出流输出时采用操作系统默认字符编码集来进行输出
高级字符流:缓冲流(BufferdeReader和BufferdeWriter)利用缓冲区来提高读写数据的效率;转换流(InputStreamReader和OutputStreamWriter)用于字节数据到字符数据之间的转换;字符打印出书流(PrintWriter),其用法与PrintStream相似,它除了接受OutputStream实例作为变量之外,还可以接受Writer对象作为输出的对象

对象流:
序列化机制:一套向流写入或读取对象数据的自动机制,这套机制将读写的实现封装在对象自身的实现之中//对象转化为流叫序列化,流转化为对象叫反序列化,序列化机制目的在于将堆中对象存储到硬盘上,加强持久性

流的使用原则
按数据源分类:
1.文本文件使用字符流,非文本文件使用字节流
2.如果数据源是文件,对于字节流,使用FileInputStream和FileOutputStream;对于字符流,使用FileReader和 FileWriter。
3.如果数据源是字节数组byte[],则使用ByteArrayInputStream和ByteArrayOutputStream。
4.如果数据源是字符数组Char[],则使用CharArrayReader和CharArrayWriter。
5.如果数据源是String对象,对于字节流,则使用StringBufferInputStream和StringBufferOuputStream;对于字符流,则使用StringReader和StringWriter。
6.如果数据源是网络数据流,对于字节流,使用InputStream和OutputStream;对于字符流,使用Reader和Writer。

按是否格式化输出分
要格式化输出,则使用PrintStream或PrintWriter。

按是否要缓冲分
要缓冲的话,对于字节流使用BufferedInputStream和BufferedOutputStream;对于字节流,使用BufferedReader和BufferedWriter。

按数据格式分
1.二进制格式(只要不能确定是纯文本的):使用InputStream、OutputStream 及其所有带 Stream结束的子类。
2.纯文本格式(含纯英文与汉字或其他编码方式):使用Reader、Writer 及其所有带 Reader、Writer 的子类。

按输入输出分
1.输入:使用Reader、InputStream 类型的子类。
2.输出:使用Writer、OutputStream 类型的子类。

特殊需要
1.从Stream到Reader、Writer的转换类:InputStreamReader、OutputStreamWriter。
2.对象输入输出:ObjectInputStream、ObjectOutputStream。
3.线程间通信:PipeInputStream、PipeOutputStream、PipeReader、PipeWriter。
4.合并输入:SequenceInputStream。
5.更特殊的需要:PushbackInputStream、PushbackReader、LineNumberInputStream、LineNumberReader。

文件类File
文件类File是磁盘文件和目录的代表(文件和文件夹的代表)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值