2021-04-05

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();

    }

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值