JavaIO
File类
File类是java.io包中很重要的一个类;
File类的对象可以是文件也可以是文件夹;
File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等;
File对象无法操作文件的具体数据,既不能进行读取也不能进行改写。
File类的构造方法:
File类的常用方法:
字节流
字节流可以读写二进制文件,主要处理音频、图片、歌曲、字节流,处理单元为1个字节。
字节输入流FileInputStream:
往程序中读叫输入流。
InputStream的基本方法
字节输出流FileOutputStream:
冲程序中往外写叫输出流。
OutputStream的基本方法
字符流
主要处理字符和字符串,字符流处理单元为1个字符。字节流将读取的字节数据,去指定的编码表中获取对应文字字符。
Reader的基本方法:
Writer的基本方法:
节点流与处理流
节点流:
如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等, 则称为节点流。
处理流:
如果流封装的是其它流对象,称为处理流。 处理流提供了缓冲功能,提高读写效率,同时增加了一些新的方法。
处理流中常用类:
Print流
Print打印流:
只做输出没有输入 打印流分为字节打印流和字符打印流
PrintWriter: 字符打印流 print方法可以打印各种类型数据
对象输入输出流–对象序列化
对象的寿命通常随着生成该对象的程序的终止而终止。 有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。
对象的输入输出流:
对象的输出流:ObjectOutputStream
对象的输入流:ObjectInputStream
在ObjectInputStream 中用readObject()方法可以直接读取一个对象,ObjectOutputStream中用writeObject()方法可以直接将对象保存到输出流中。
对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过程.
对象 的输入流将指定序列化好的文件读出来的过程,就是对象反序列化的过程。
对象的输出流将对象写入到文件中称之为对象的序列化,所以被序列化对象的类必须要实现 Serializable接口。 Serializable接口中没有任何方法。当一个类声明实现Serializable接口后, 表明该类可被序列化。 在类中可以生成一个编号 private static final long serialVersionUID = -5974713180104013488L;
随机生成 唯一的 serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化.
如果不显示生成序列号,那么将会隐式生产,但是隐式生成后,类一旦发生改变,序列号也会随之改变.
transient关键字:
默认情况下当执行了对象序列化的时候会将类中的全部属性的内容进行全部的序列化操作,但是很多情况下有一些属性可能并不需要序列化的处理,这个时候就可以在属性的定义上使用transient关键字来完成了。
private transient String name;