繁体   English   中英

我如何将对象的数据写入文件,然后在读取文件时将其解析回新的对象

[英]How do I write the data of an object to a file and then parse it back into a new object when the file is read

我正在尝试编写一个用于抽动的聊天机器人,并希望存储曾经访问过该频道的所有观看者的列表以及我为每个用户存储的一些数据。 这些包括他们的用户名,级别,有多少点等,到目前为止,我所要使用的是使用String.format()为文件创建一个字符串,然后我们将其写入带有bufferedWritter的文件中。 我希望每次维护或添加新功能后重新启动bot时都能获得查看者列表。 我只是不确定我是否以最有效的方式进行操作,而且不知道如何在不运行for循环的情况下读取它,该循环检查分号的位置并用子字符串填充数据。

public abstract class Viewer {
    private String username;
    private int level;
    private int exp;
    private int points;
    private int intermediatePoints;
    private boolean isMod;
    private boolean isPreviousWinner;
    private boolean enteredRaffle;

    public Viewer(String username){
        this.username = username;
        this.level = 0;
        this.exp = 0;
        this.points = 0;
        this.intermediatePoints = 0;
        this.isMod = false;
        this.isPreviousWinner = false;
        this.enteredRaffle = false;
    }

    public Viewer(String username, int level, int exp, int points, int intermediatePoints, 
            boolean isMod, boolean isPreviousWinner, boolean enteredRaffle){
        this.username = username;
        this.level = level;
        this.exp = exp;
        this.points = points;
        this.intermediatePoints = intermediatePoints;
        this.isMod = isMod;
        this.isPreviousWinner = isPreviousWinner;
        this.enteredRaffle = enteredRaffle;
    }

public String setViewerString(){
        String viewerDataString = String.format("%s;%d;%d;%d;%d;%b;%b;%b;", 
                username, level, exp, points, intermediatePoints, isMod, isPreviousWinner, enteredRaffle);
        return viewerDataString;
    }

    public void parseViewerDataString(){

    }
}

抱歉,如果我太具体了,我以前从没有在这里问过一个问题,也不确定多少信息太多了。

可能应该通过在“ java.io.Serializable”包中实现可序列化的接口来使可序列化的类

此类的对象可以序列化(保存在文件中),反序列化可以看一​​下Java中的序列化

使用java.io.PrintWriter和java.io.BufferedReader类写入/读取文件。 在此处找到文档:

的BufferedReader

为PrintWriter

至于从文件读取后解析数据,您可以尝试如下操作:

public void parseViewerDataString(String dataString){
    String[] dataArray = dataString.split(";");
    //This will automatically split up the string in between semicolons

    //Then use dataArray to assign values to field

    username = dataArray[0];
    level = Integer.parseInt(dataArray[1]);
    exp = Integer.parseInt(dataArray[2]);
    //And so on...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM