2013-02-14 77 views
6

對於一個非常基本的RPG遊戲(嗯,自上而下游走於目前,)我想製作一個讀取「保存」文件並將其存儲在內存中的方法(保存)我希望這個保存文件能夠方便用戶,方法是讓某些行不能被該方法讀取,以便我可以對修改它等進行說明。目前,計劃是讓它不讀取前面有%的行,但如果%導致問題,則可能會更改。從文本文件中讀取字符和行

保存格式本身我想在一個壓縮塊中 - 一個或兩個字母數字字符表示單個「圖塊」的內容。我不想簡單地爲每個屏幕區域設置169行,我寧願將它們放在13 * 13的壓縮塊中(再次,爲方便用戶使用)。

本質上,我怎麼能 一個)檢測一個符合% b開始)如果是這樣,則跳到下一行 c)中如果不是,在一個時間複製到字符串數組 d)跳過讀取兩個字符空行

我明白BASIC IO ,但是我一直無法找到一種按字符和線條閱讀的方式。

回答

3

就個人而言,我會用BufferedReader讀取由線成單個String對象文件中的行,並檢查內容。您可以使用狡猾的名稱String.startsWith("%")方法檢查一行是否以註釋字符開頭,並使用String.charAt(index)獲取行中的單個字符,或使用String.substring(start, start+2)獲取雙字符。

+0

對不起,另外一個問題是不能保證它是自己的主題:有沒有辦法做到這一點(以相當簡單的方式),並不需要每一種與數據交互的方法(即每一種方法)都有拋出IOException子句? – JTTCOTE 2013-02-15 04:20:00

+0

有沒有辦法消除拋出'IOException'的可能性。您需要決定如何以及在哪裏處理它。 *一種可能的方式可能是捕獲異常,拋出未經檢查的RuntimeException。 – SimonC 2013-02-15 04:51:19

0

我會逐行閱讀掃描儀,解析前幾個字符,然後在需要時繼續。例如:

Scanner lineReader = new Scanner(new FileReader(filename)); 
Scanner parser; 
while (scanner.hasNextLine()){ 
    parser = new Scanner(scanner.nextLine()); 
    if(parser.hasNext())){ //checks for blank line 
    String firstWord = parser.next(); 
    if(/*Check for %*/) 
     continue; 
    else 
     //parse as you will 
    } 
} 
+0

雖然如果您的字符對沒有分隔,您可能不想使用第二個掃描儀來解析每一行。 – 2013-02-14 14:19:17