20天jvava(15)

corejava day10 - IO流的分类,输入流和输出流,对象序列化
2011/08/04
==============================
回顾:
1)File类:对文件和目录进行管理操作,不会访问文件的内容
2)RandomAccessFile类:用于随机读写文件的内容,
a.所操作的文件可以理解为byte[],
通过文件指针维护文件的位置
b.访问模式: r 和 rw
c.常用方法:
与文件指针有关的方法:
long getFilePointer()
void seek(long pos)
int skipBytes(int n)
long length()
void setLength(long len)
与写入数据有关的方法(3类):
writeByte,writeShort,writeInt,
writeLong,wirteFloat,writeDouble,
writeChar,writeBoolean
-----------------------------
writeChars(String v):每个字符占两个字节
writeBytes(String v):由字符个数确定写入字节数
writeUTF(String v):通过扩展utf编码写入字符串
-----------------------------
void write(int v):写入一个字节
void write(byte[] b):把字节数组全部写入文件
void write(byte[] b,int off,int len)
与读取数据有关的方法:
readByte,readShort,readInt,readLong,
readFloat,readDouble,readChar,readBoolean
----------------------------------
String readUTF()
----------------------------------
int read():读取1个字节,-1表示文件末尾
int read(byte[] b):将数据读到byte[]中,
返回值是实际读取的字节数,-1表示文件文件
int read(byte[] b,int off,int len)
off - 2,len -3 byte[10]
============================================
1.IO流的分类:
1)什么是IO流?
Java通过IO流处理程序的输入和输出。
IO流是输入、输出的一种抽象,
从而能够使用统一的方式处理输入和输出。
流实际上可以理解为一组有序的数据序列。
2)IO流的分类
a.按操作分类:输入流和输出流
从输入流读取数据,向输出流写入数据
b.按数据分类:字节流和字符流
字节流的基本数据单元是字节
字符流的基本数据单元是字符
2.输入流和输出流
a.输入流用于读取数据,
Java提供了字节输入流的基类InputStream
b.InputStream类:抽象类,字节输入流的基类
方法:
int read():读取一个字节,返回对应的int,
-1表示读到流的末尾
int read(byte[] b):将数据读到字节数组中,
返回值表示是实际读取的字节数,-1表示流的末尾
int read(byte[] b,int off,int len):
将长度为len的数据读到字节数组中,
off表示数组的起始位置,返回值的含义相同
int avaliable():返回流中可用的字节数
long skip(long n):跳过指定的字节数,
返回值表示实际跳过的字节数
void close():关闭流
使用输入流的基本步骤:
打开流->循环读取流中的数据->关闭流
c.FileInputStream类:
a.文件字节输入流,是InputStream的子类
b.构造方法:
FileInputStream(String)
FileInputStream(File)
d.输出流用于写入数据 ,
Java提供OutputStream类作为字节输出流的基类
e.OutputStream类:抽象类
方法:void write(int v):写入1个字节
void write(byte[] b):将字节数组的内容写入流中
void write(byte[] b,int off,int len):
将字节数组的部分内容写入流中,off表示数组的起始位置,
len表示写入流中的字节数
void flush():强制刷新数据,并将缓存中的数据写入输出流
void close():关闭流
使用输出流的标准步骤:
打开流->循环写入数据->关闭流
f.FileOutputStream类:文件字节输出流,
是OutputStream的子类
构造方法:FileOutputStream(String filename)
FileOutputStream(File file)
FileOutputStream(String filename,
boolean append)
- append=true,追加数据,
append=false,覆盖文件中的数据
-----------------------------------------
InputStream - FileInputStream
ByteArrayInputStream - 内存中字节数组
DataInputStream - 直接读取流中的各种数据类型的数据
OutputStream - FileOutputStream
ByteArrayOutputStream
DataOutputStream
-----------------------------------------
3.对象的序列化与反序列化
1)什么是序列化?
对象序列化是指把对象的状态保存到文件中。 对象->文件
对象反序列化是指从文件中读取对象状态的过程。文件->对象
2)ObjectOutputStream类:
OutputStream的子类,用于序列化对象
方法:ObjectOutputStream(OutputStream)
void writeObject(Object)
对象序列化的步骤:
a.通过FileOutputStream构建ObjectOutputStream
b.通过writeObject(Object)序列化对象
c.关闭流
3)ObjectInputStream类:
InputStream的子类,用于反序列化对象
方法:ObjectInputStream(InputStream)
Object readObject() - 读取对象
对象反序列化的步骤:
a.通过FileInputStream构建ObjectInputStream
b.通过readObject()读取对象并反序列化
c.关闭流
4)自定义的类需要实现接口java.io.Serializable
才能序列化
接口Serializable是一个空接口,接口中没有任何方法
实际上Serializable是一个标识接口,
实现这个接口的类才可以完成序列化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值