我不確定如何在我設計的高爾夫程序中存儲關於個人用戶的數據(每個用戶需要在之前的漏洞等進行跟蹤並記錄)在Java中如何存儲有關個人用戶的數據,而無需爲每個用戶分別創建csv文件?
我想知道是否有一種不需要爲每個用戶創建單獨文件就可以存儲這些數據的方法?
任何幫助非常感謝!
感謝
我不確定如何在我設計的高爾夫程序中存儲關於個人用戶的數據(每個用戶需要在之前的漏洞等進行跟蹤並記錄)在Java中如何存儲有關個人用戶的數據,而無需爲每個用戶分別創建csv文件?
我想知道是否有一種不需要爲每個用戶創建單獨文件就可以存儲這些數據的方法?
任何幫助非常感謝!
感謝
您可以將該存儲爲JSON代替,EG:
{
"Arnold Palmer" : {
"handicap" : "2",
"history" : {
"1" : {
"courseName" : "St Andrews",
"holeNumber" : "1",
"score" : "2"
},
"2" : {
"courseName" : "St Andrews",
"holeNumber" : "2",
"score" : "3"
}
... etc
}
},
"Tiger Woods" : {
"handicap" : "4",
"history" : {
"1" : {
"courseName" : "Pebble Beach",
"holeNumber" : "1",
"score" : "4"
},
"2" : {
"courseName" : "Pebble Beach",
"holeNumber" : "2",
"score" : "6"
}
... etc
}
}
然後,就分析它當程序啓動並提取您需要該用戶的信息(也有庫,你可以用於此)。我建議JSON是一種更適合您的需求的數據格式,因爲您需要存儲動態的圖形數據。 CSV文件非常適合更簡單的數據集。
我仍然認爲最好每個用戶保留一個單獨的文件,因爲它將節省您不得不通過一個巨大的文件來查找您需要的數據。取決於你將擁有多少用戶。
此外,如果您需要在用戶之間保留數據,請爲此提供共享文件(例如高分)。
在Java中,存儲鍵值對的最簡單方法是properties文件,例如,摹:
寫:
Properties prop = new Properties();
prop.setProperty("user1.prevHole", "foo");
prop.store(new FileOutputStream("golf.properties"), null);
閱讀:
Properties prop = new Properties();
prop.load(new FileInputStream("golf.properties"));
String prevHole = prop.getProperty("user1.prevHole");
如果您不需要的文件導出到另一個程序/ system,你可以停止關心它的格式並開始考慮創建一個類層次結構y代表你的模型,最終將依靠Java對象序列化:
對象寫入一個文件:從文件
MyObject obj1=...;
MyObject obj2=...;
try (ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream(file)))
{
output.writeObject(obj1);
output.writeObject(obj2);
}
閱讀對象:
try (ObjectInputStream input=new ObjectInputStream(new FileInputStream(file)))
{
MyObject obj=(MyObject)input.readObject();
}
你只需要確保您的類(上例中的MyObject)實現java.io.Serializable
以及定義中涉及的每個類(成員變量及其後續定義)。
只要您選擇Collection的可序列化實現(例如java.util.ArrayList
),就可以對對象進行序列化/解析集合。
當然,單個CSV文件可以在這裏做到這一點。 – khriskooper
有沒有進一步的見解? @khriskooper –
只需將數據寫入單個文件?在數據中添加用戶名,以便區分它的數據。 – Kayaman