2013-02-14 19 views
6

ÇOK temel bir RPG için (Peki, şu anda oyunun etrafında yukarıdan aşağıya yürüyüş yapın) Bir "kaydetme" dosyasını okuyan ve bellekte saklayan bir yöntem yapmak istiyorum (Kaydetme daha sonra gelir.) Bu kayıt dosyasını, kullanıcı tarafından okunacak bir yöntemle, kullanıcı tarafından okunmasını ve bu şekilde değişiklik yapma talimatlarını verebilmem için kullanıcı dostu olmasını isterim. Şu anda, planın ön yüzdeki satırları okumaması, ancak% 'nin bir soruna yol açması durumunda bu durum değişebilir.Metin dosyasından hem char hem de satır tarafından okunabilir

Kayıt biçiminin kendisi sıkıştırılmış bir bloğa sahip olmak isterdim - bir veya iki alfanümerik karakter, tek bir "kiremit" içeriğini belirtir. Alanın her ekranı için 169 satıra sahip olmak istemiyorum, 13 * 13 sıkıştırılmış bir bloğa sahip olmayı tercih ediyorum (yine kullanıcı dostu olmak için.)

Esasen, nasıl ikisini de yapabilirim bir satır% b ile başlar eğer öyleyse, sonraki satıra c atlarsanız a))) Algılama değilse, dize dizisine bir zaman kopyalama d) Skip az iki karakter okumak boş satır

Ben TEMEL IO anlıyorum ama ben hem karakter hem de çizgi tarafından bir okuma yolu bulamadım.

cevap

3

Kişisel olarak, ayrı ayrı String nesneleri içine dosyayı satır satır okumak için BufferedReader kullanın ve içerikleri kontrol olacaktır. Bir satırın kurgusal olarak adlandırılan String.startsWith("%") yöntemini kullanarak bir satırın bir karakterle başlayıp başlamadığını kontrol edebilir ve String.charAt(index) kullanarak satırdaki tek tek karakterleri veya String.substring(start, start+2) kullanarak çift karakterleri alabilirsiniz.

+0

Üzgünüz, kendi konusu olduğunu garanti etmeyen bir tane daha hızlı soru: Bunu yapmak için (yani her bir yöntemle) etkileşimde olan her bir yöntemi gerektirmeyen (makul bir şekilde kolay) herhangi bir yol var mı? bir IOException deyimini atar? – JTTCOTE

+0

"IOException" öğesinin atılma olasılığını ortadan kaldırmanın bir yolu yok. Nasıl ve nerede kullanmak istediğinize karar vermeniz gerekiyor. * Bir * olası bir istisna bir "RuntimeException" denetlenmeyen bir atışı yakalamak olabilir. – SimonC

0

Tarayıcı ile satır-by-line okuyor, ilk çift karakterleri ayrıştırıyor ve gerekiyorsa devam ediyorum. Örnek:

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

Karakter karakterleri sınırlandırılmadıysa, her satırı ayrıştırmak için ikinci bir Tarayıcı kullanmak istemeyebilirsiniz. –

İlgili konular