[Day25]IO(Properties、序列化流、打印流、Commons-IO)
1.Properties类-持久的属性集,可保存在流中或从流中加载,属性列表中每个键及其对应值都是一个字符串
1.1 特点
(1)Hashtable的子类,map集合中的方法都可以用
(2)该集合没有泛型,键值都是字符串
(3)是一个可以持久化等呃属性集。键值可以存储到集合中,也可以存储到持久化的设备,键值的来源也可以是持久化的设备
(4)有和流技术相结合的方法
void load(InputStream inStream) 把指定流所对应的文件中的数据,读取出来,保存到Properties集合中
void load(Reader reader)
void store(OutputStream out,String comments) 把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息
void store(Writer writer,String comments)
2.序列化流与反序列化流
2.1 对象序列化流ObjectOutputStream-将Java对象的基本数据类型和图形写入OutputStream,使用OutputStream读取对象,通过在流中使用文件可以实现对象的持久储存
(1)构造方法
ObjectOutputStream(OutputStream out)-创建写入指定OutputStream的ObjectOutputStream
(2)方法
void writeObject(Object)-将指定的对象写入ObjectOutputStream
2.2 对象反序列化流ObjectInputStream-ObjectInputStream对以前使用ObjectOutputStream写入的基本数据和对象进行反序列化,支持java.io.Serializable接口的对象才能从流读取
(1)构造方法
ObjectInputStream(InputStream in)-创建从指定InputStream读取的ObjectInputStream
(2)方法
void readObject()-从ObjectInputStream读取对象
2.3 序列化接口-当一个对象要能被序列化,这个对象所属的类必须实现Serializable接口。
(1)若不识闲Serializable接,会发生异常NotSerializableException异常
(2)当反序列化对象时,如果对象所属的class文件在序列化之后进行的修改,那么进行反序列化也会发生异常InvalidClassException。发生这个异常的原因如下:
| 该类的序列版本号与从流中读取的类描述符的版本号不匹配
l 该类包含未知数据类型
l 该类没有可访问的无参数构造方法
(3)Serializable标记接口。该接口给需要序列化的类,提供了一个序列版本号。serialVersionUID. 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
2.4 瞬态关键字transient-当一个类的对象需要被序列化时,某些属性不需要被序列化,则可以用transient修饰
(1)静态修饰也不会被序列化,因为序列化是把对象数据进行持久化存储,而静态的属于类加载时的数据,不会被序列化
3. 打印流-添加输出数据的功能,使它们能够方便地打印各种数据值表示形式
3.1 分类
(1)字节打印流 PrintStream
(2)字符打印流 PrintWriter
3.2 方法
void print(String str): 输出任意类型的数据,
void println(String str): 输出任意类型的数据,自动写入换行操作
3.3 打印流完成数据自动刷新-可以通过构造方法,完成文件数据的自动刷新功能
public PrintWriter(OutputStream out, boolean autoFlush)
public PrintWriter(Writer out, boolean autoFlush)
4. commons-IO
4.1 导入classpath-加入classpath的第三方jar包内的class文件才能在项目中使用
4.2 FilenamUtils-这个工具类用来处理文件名
getExtension(String path):获取文件的扩展名;
getName():获取文件名;
isExtension(String fileName,String ext):判断fileName是否是ext后缀名;
4.3 FileUtils-提供文件操作(移动文件,读取文件,检查文件是否存在等)的方法
readFileToString(File file):读取文件内容,并返回一个String;
writeStringToFile(File file,String content):将内容content写入到file中;
copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
copyFile(File srcFile,File destFile);文件夹复制
最新文章
- 使用MATLAB对图像处理的几种方法(下)
- 存储过程执行失败与sql668n
- Android listview 制作表格样式+由下往上动画弹出效果实现
- CodeForces 560B Gerald is into Art
- 【Android】数据的应用-使用sharedpreferences存储数据
- eclipse Maven构建的project无法公布lib到tomcat的解决方法
- MyEclipse和Eclipse非常方便的快捷键
- 从Windows角度看Mac OS X上的软件开发
- 好程序员web前端分享javascript关联数组用法总结
- C# 比较多个数组(lambda,匿名比较器)
- ubuntu 16.04 搭建tigervnc
- Fiddler抓包【3】_设置断点修改
- python基础学习(七)列表
- float数组转字符串实施方案小记
- 面向对象【day08】:动态导入模块(八)
- alibaba的FastJson(高性能JSON开发包) json转换
- Fiddler的学习之路
- android应用开发-从设计到实现 3-3 Sketch静态原型设计
- MsSQL使用加密连接SSL/TLS
- linux driver ------ 交叉工具链(cross toolchain)