[英]How to read a certain line with a BufferedWriter
我正在為我的游戲開發一個簡單的保存系統,它涉及三種方法,init加載和保存。
這是我第一次嘗試讀取和寫入文件,因此我不確定我是否正確地執行此操作,因此我請求幫助。
我想做這個:
游戲開始時,會調用init。 如果文件保存不存在,則創建它,如果存在,則調用load。
稍后在游戲中,將調用save,並且變量將逐行寫入文件(在此示例中我使用了兩個。)
但是,我堅持加載功能。 我不知道過去的重點是什么。 這就是為什么我要問,是否可以從文件中選擇某一行,並將變量更改為該特定行。
這是我的代碼,就像我說的,我不知道我是否正確地這樣做,所以請幫助。
private File saves = new File("saves.txt");
private void init(){
PrintWriter pw = null;
if(!saves.exists()){
try {
pw = new PrintWriter(new File("saves.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}else{
try {
load();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void save(){
PrintWriter pw = null;
try {
pw = new PrintWriter(new FileOutputStream(new File("saves.txt"), true));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
pw.println(player.coinBank);
pw.println(player.ammo);
pw.close();
}
public void load() throws IOException{
BufferedReader br = new BufferedReader(new FileReader(saves));
String line;
while ((line = br.readLine()) != null) {
}
}
我想可能有一個數組,將文本文件中的字符串解析為整數,將其放入數組,然后使變量等於數組中的值。
好像你的文件是key = value結構,我建議你在java中使用Properties對象。 這是一個很好的例子 。
您的文件將如下所示:
player.coinBank=123
player.ammo=456
要保存:
Properties prop = new Properties();
prop.setProperty("player.coinBank", player.getCoinBank());
prop.setProperty("player.ammo", player.getAmmo());
//save properties to project root folder
prop.store(new FileOutputStream("player.properties"), null);
然后你會像這樣加載它:
Properties prop = new Properties();
prop.load(new FileInputStream("player.properties"));
//get the property value and print it out
System.out.println(prop.getProperty("player.coinBank"));
System.out.println(prop.getProperty("player.ammo"));
閱讀和寫作幾乎是對稱的。
你正在寫player.coinBank
作為文件的第一行, player.ammo
作為第二行。 因此,在閱讀時,您應該閱讀第一行並將其分配給player.coinBank
,然后讀取第二行並將其分配給player.ammo
:
public void load() throws IOException{
try (BufferedReader br = new BufferedReader(new FileReader(saves))) {
player.coinBank = br.readLine();
player.ammo = br.readLine();
}
}
請注意這里使用try-with-resources語句 ,這樣可以確保讀者關閉,無論方法發生什么。 在寫入文件時,您還應該使用此構造。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.