IO学习

I/O:
I:Input
O:Output
数据的流动称为流
文件从硬盘到内存的过程称为输入(input)又称为读。
文件从内存到硬盘的过程称为输出(ouput)又称为写。
I/O流分类:
按方向:
进入内存叫输入流,也叫读
离开内存叫输出流,也叫写
按读取数据的方式:
字节流:
一次读取一个字节byte,也就是8个二进制位,万能流,可读取文本文件、声音、视频等
字符流:
一次读取一个字符,只能读取普通文件,连word也不能读取,只能读*.txt
综上分为
输入流、输出流
字节流、字符流
Java中I/O流已经写好了
Java I/O流四个大分支:
java.io.InputStream 字节输入流
java.io.OutputStream 字节输出流
java.io.Reader 字符输入流
java.io.Writer 字符输出流
以上四个类都是抽象类,所有流都实现了java.io.Closeable接口,都是可关闭的,都有close方法
在Java中只要类名以Stream结尾就是字节流,以Reader/Writer结尾就是字符流
所有输出流都实现了java.io.Flushable,都是可刷新的,都有flush方法,在输出流输出完成要flush(),是将管道内未输出的数据强行输出完,刷新的作用就是清空管道,没有flush可能导致丢失数据 
java.io包下需要掌握的流有16个
文件专属:
java.io.FileInputStream
java.io.FileOutputStream
java.io.FileReader
java.io.FileWriter
转化流:(将字节流转化为字符流)
java.io.InputStreamReader
java.io.OutputStreamWriter
缓冲流专属:
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream
数据流专属:
java.io.DataInputStream
java.io.DataOutputStream
标准输出流:
java.io.PrintWriter
java.io.PrintStream
对象专属流:
java.io.objectInputStream
java.io.objectOutputStream
FileInputStream的使用:
FileIOutputStream的使用:
输出流需调用flush方法
FileOutputStream有不同的构造方法,加ture在文章末尾写入,不加ture会清空原文,若是写入时原文件不存在,则会新建文件
File类的使用:
各类方法使用
File传入路径代表文件
FileReader类的使用:
字符输入流:只能读取普通文本
使用方法同FileInputStream
FileWriter的使用:
字符输出流,只能输出普通文本
使用方法同FileOutStream,也是在输出结束后使用flush方法
使用FileReader和FileWriter拷贝普通文本文件
BufferedReadrTest的使用
可传入字符流的参数,关闭Buffered时会自动关闭节点流,传入的是节点流,外部的是包装流
DataOutputStream的使用:
数据专属流,将数据及数据类型一并写入文件
由Data写入的内容只能由Data读取,且必须按照写入的顺序读
PrintStream的使用:
标准输出流不需要close();
默认输出在控制台,可改变流的方向
只要标准输出流做日志文件:
一般来说要加ture,避免覆盖
ObjectOutputStream与ObjectInputStream使用
只有继承Serializable接口才能进行序列化,JVM看到Serializable会自动分配一个序列版本号,用来区分同名的java文件
缺点:代码改动后会编译成全新的字节码,序列版本号会变,因此要主动写好序列版本号,随机分配,尽量全球唯一
会先识别类名,再识别序列版本号
transient关键字表示游离,不参与序列化
反序列化
序列化
序列化集合:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值