1.Properties集合
a.特点:
Properties是HashTable的子类,可以作为双列集合使用,
一般使用Properties读写配置文件,键和值都是字符串,因此Properties没有泛型
b.特有功能
setProperty(String key,String value)
getProperty(String key)
c.读写配置文件
load(InputStream is)//通过流将配置文件的键值对加载到Properties中
store(OutputStream out, String comments)//将Propties中的键值对写入流中,利用底层资源写入到配置文件中
//comments指的是配置文件的注释信息
2.对象序列化与反序列化(对象的持久化)
a.操作对象的流
ObjectOutputStream:序列化 将对象写入文件
ObjectInputStream: 反序列 从文件中读取对象
b.注意事项:
a.被读写的对象需要实现 Serializable 接口
b.静态属性的值不被写入到文件中,因为静态属性不属于某个对象而属于类
c.如果想让某个属性的值不写入文件,就加transient
c.序列号:
当从文件读取对象时该文件中记录的序列号会跟编译后生成的类的序列号进行对比
如果不一致报错
解决方案:
1.改完源代码后,再次writeObject(),然后再readObject()
2.再读写的对象所属的类中把序列号写死,每次改动都不会在自动生成序列号
3.打印流:
PrintStream://只能传入字节流
PrintStream(OutputStream out)
PrintWriter://既可以传入字节流也可以传入字符流
PrintWriter(OutputStream out)
PrintWriter(Writer out)
PrintWriter(OutputStream out, boolean autoFlush)//autoFlush=true
//自动刷新功能针对的是println方法,print方法无效
println();//将数据原样写入,例如100就写入100
wirte();//write方法将查码表找到对应的字节写入
案例:拷贝文本文件:
BufferedReader bfr = new BufferedReader(new FileReader("c:\\a.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("d:\\a.txt"),true);
String line = null;
while((line = bfr.readLine())!=null){
pw.println(line);
}
pw.close();
bfr.close();
|
|