IO流 方法 及使用 【最全!】

基本输入类型流

可以读写基本数据类型

数据输入流:DataInputStream
DataInputStream( InputStream in )
数据输出流 : DataOutputStream
dataOutputStream( OutputStream out )
特点:
1,该流是一个字节流,可以读写字节的同时,还能读写基本数据类型
2,通过数据类型输出流写入到文件中,使用文本文件打开时不能阅读,提高了基本数据安全性
3,读的时候必须和写的顺序保持一致,提高基本数据类型在文件中保存的安全性

万能输出流PrintWriter

PrintWriter / PrintStream
概述: 向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中所有Print方法。
特点:
1,只能写数据,不能读数据
2,可以操作任意类型的数据
3,如果启动了自动刷新,能自动刷新
4,如果启动了自动刷新,则只有在调用 println 、 printf 或 format的其中一个方法才能完成此操作

java.util.InputMisnatchException 输入小数

随机访问文件RandomAccessFile

RandomAccessFile概述:此类的实例支持对随机访问文件的读取和写入

特点
1,RandomAccessFile类不属于流,是Object类的子类
2,包含了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入。
3,能够读写基本类型
4,支持随机访问文件的读取和写入 seek / getFilePointer
long getFilPointer ( )
long length ( )
void seek(long pos)
void setLength( long newLength)

序列化流和反序列化流

ObjectOutputStream 序列化流 将java对象的基本数据类型和图形写入OutputStream

ObjjectInputStream 反序列化流 读取(重构)对象,通过流中使用文件可以实现对象持久存储。

如何实现序列化?
类通过jiava.io.Serializable 接口以启用其序列化功能
未实现此接口的类型将无法使其任何状态序列化 或反序列化,该接口没有任何方法,是一个标记接口
未实现序列化抛出为序列化异常; NotSerializableException
序列化数据后,再次修改类文件,读取数据会出现问题,如何处理?
实现Serializable 接口 ,
使用transient关键字声明 , 不需要序列化的成员变量

你可能感兴趣的:(IO流 方法 及使用 【最全!】)