Day10
1 如果修改这个文件 读取数据会出问题
出现的异常
因为学生类实现了Serializable接口
序列化运行时与每个可序列化的类关联一个版本号,称为serialVersionUID,它在反序列化过程中使用,以验证序列化对象的发送者和接收者是否加载了与序列化兼容的对象的类。 如果接收者已经为具有与对应发件人类别不同的serialVersionUID的对象加载了一个类,则反序列化将导致一个InvalidClassException 。 一个可序列化的类可以通过声明一个名为"serialVersionUID"的字段来显式地声明它自己的serialVersionUID,该字段必须是static,final和long类型:
通俗来讲就是 这个接口会使该类产生唯一的id 如果更改这个类 那么 objcetRead会与id匹配 匹配则会不通过 抛出InvalidClassException 序列化异常
解决方法
使用一个唯一标识 来标记这个类 最好使用stitic private 修饰
问题三
给她tranient修饰起来就可以 不参与序列化他就
这样的话 用objectread读取的就是一个 默认的值
propertier操作类 集合类
可以保存在流中 或重流中加载
没有办法家泛型 (特殊)
store 储藏蕴藏
package Day10.Properties;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
writefile();
read();
}
private static void read() throws IOException {
FileReader fr=new FileReader("1.txt");
Properties ps=new Properties();
ps.load(fr);
f**r.close();
Set<Map.Entry<Object, Object>> entries = ps.entrySet();
for (Map.Entry<Object, Object> o:entries){
System.out.println(o.getValue()+""+o.getKey());
}** //自己琢磨出来的
//别人提供 geiProperties 也可以 直接通过键获取值
Object 王五 = ps.get("王五");
System.out.println(王五);
System.out.println(ps);
}
private static void writefile() throws IOException {
Properties ps=new Properties();
ps.setProperty("张三","22");
ps.setProperty("李四","72");
ps.setProperty("王五","12");
FileWriter fw=new FileWriter("1.txt");
ps.store(fw,"store是储藏蕴藏意思");
fw.close();
}
}
操作properties类的各种放发
控制游戏次数操作文件代码
package Day10;
import Day10.ClassStreamDemo.Student;
import Day10.SystemIn.Game;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class GameProperte {
public static void main(String[] args) throws IOException {
Properties ps=new Properties();
FileReader fr=new FileReader(“1.txt”);
ps.load(fr);
fr.close();
String count = ps.getProperty(“count”);
int i = Integer.parseInt(count);
if (i>3){
System.out.println(“game over “);
}
else
{
Game.star();
i++;
ps.setProperty(“count”,String.valueOf(i));
FileWriter fileWriter=new FileWriter(“1.txt”);
ps.store(fileWriter,””);//不怎么理解这里具体的操作步骤
fileWriter.close();
}
}
}