簡體   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