如何从文件中加载数据到对象中

使用时继承Externalizable接口自己实现writeExternal和readExternal序列化方法,使用时在保存对象到文件时先实例化生成对象为对象赋值,然后调用对象的save方法保存进文件中,在需要从文件中加载时先new或者初始化一个对象然后调用load方法将文件中数据缓存在对象中,文件就相当于是一个数据库。加载完之后就可以调用set和get方法处理了 out.writeObject()与in.readObject()使用顺序要一致;

public class SkillMode implements Externalizable {
    private static final long serialVersionUID = 1L;
    private Logger logger = LoggerFactory.getLogger(SkillMode.class);
    private Map<Integer,Definition> allSkill;
    private String version;
    private String versionMessage;

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(version);
        out.writeObject(versionMessage);
        out.writeObject(allSkill);
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        version = (String) in.readObject();
        versionMessage = (String) in.readObject();
        allSkill = (Map<Integer, Definition>) in.readObject();
    }

    public Map<Integer, DmDialogDefinition> getAllSkill() {
        return allSkill;
    }

    public void setAllSkill(Map<Integer, DmDialogDefinition> allSkill) {
        this.allSkill = allSkill;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getVersionMessage() {
        return versionMessage;
    }

    public void setVersionMessage(String versionMessage) {
        this.versionMessage = versionMessage;
    }

    public void load(File file) throws IOException {
        logger.debug("File.load path:{}",file.getAbsolutePath());
        ObjectInputStream ios = null;
        InputStream in = null;
        try {
            in = new FileInputStream(file);
            ios = new ObjectInputStream(new BufferedInputStream(in));
            in = null;
            this.readExternal(ios);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            throw new IOException(e);
        } finally {
            saveClose(ios);
            saveClose(in);
        }
    }

    public void save(File file) throws IOException {
        ObjectOutputStream oos = null;
        OutputStream out = null;
        try {
            out = new FileOutputStream(file);
            oos = new ObjectOutputStream(new BufferedOutputStream(out));
            out = null;
            this.writeExternal(oos); // 保存对象到文件
        }  finally {
            saveClose(oos);
            saveClose(out);
        }
    }

    private void saveClose(AutoCloseable c){
        if (c != null){
            try {
                c.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
从大量PDF文件提取数据到Excel是许多人都需要的一个任务,这可以让我们更快地分析和处理数据,也可以让我们更快速地获取想要的信息。但是,由于PDF文件的格式特殊,我们需要一些专门的工具来辅助我们数据提取。 在这个任务,我们可以使用几个工具,比如程序语言Python以及一些Python库,比如PyPDF2和Pandas。PyPDF2是一个用于处理PDF文件的Python库,而Pandas是一个用于数据处理的Python库,这两个库的结合可以让我们更轻松地从大量PDF文件提取数据。 首先,我们需要安装Python,然后安装PyPDF2和Pandas。在安装完成之后,我们可以打开Python的IDE,然后编写一些代码来实现我们的需求。 我们需要用代码打开每个PDF文件,然后从文件提取需要的数据。我们可以使用PyPDF2库的PdfFileReader对象来读取PDF文件,然后使用Pandas来将数据以表格的形式保存在Excel。 通常情况下,我们可以使用Python的for循环来找到并打开每个PDF文件,然后提取需要的数据。我们可以使用Pandas来创建一个新的Excel表格,并将提取的数据添加到表格。在代码执行完毕之后,我们就可以在Excel查看并使用提取的数据了。 总之,从大量PDF文件提取数据到Excel并不难,我们只需要使用正确的工具和编写正确的代码就能完成任务。使用Python和相应的Python库,我们可以在很短的时间内轻松地完成这项工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值