私の目標は、アプリケーションからテキストファイルに多くのハイスコアを保存することです。私はFileOutputStreamを使用して作成します。私はファイルから読み込み、各行を配列リスト項目に入れたいと思っています。 InputStreamReaderを使用している間、テキストのすべての行をテキストファイルから変数sにロードすることができます。今私の問題は、テキストファイルから各行を取り出し、配列リスト項目に保存することです。どのように私はこれを達成するだろうか?テキストファイルを1行ずつ読み込む方法は?
Example string variables for high scores:
String myStr = "Ryan 150 hard \n";
String myStr2 = "Andrew 200 Medium \n";
public void saveClick(){
try{
//String myNum = Integer.toString(life);
FileOutputStream fOut = openFileOutput("storetext.txt", Context.MODE_PRIVATE);
OutputStreamWriter outputWriter = new OutputStreamWriter(fOut);
outputWriter.write(myStr);
outputWriter.write(myStr2);
outputWriter.close();
/*OutputStreamWriter out = new OutputStreamWriter(openFileOutput(STORETEXT, 0));
out.write(life);
out.close();*/
Toast.makeText(getApplicationContext(), "Save Successful", Toast.LENGTH_LONG).show();
}
catch(Throwable t){
Toast.makeText(getApplicationContext(), "Save Unsuccessful", Toast.LENGTH_LONG).show();
}
}
public void readFileInEditor(){
try{
FileInputStream fileIn = openFileInput("storetext.txt");
InputStreamReader InputRead = new InputStreamReader(fileIn);
char [] inputBuffer = new char[READ_BLOCK_SIZE];
String s = "";
int charRead;
while ((charRead=InputRead.read(inputBuffer))>0){
//char to string conversion
String readString = String.copyValueOf(inputBuffer,0,charRead);
s += readString;
}
InputRead.close();
Toast.makeText(getApplicationContext(), "New Text: " + s , Toast.LENGTH_LONG).show();
//myText.setText("" + s);
try{
//life = Integer.parseInt(s);
//Toast.makeText(getApplicationContext(), "My Num: " + life , Toast.LENGTH_LONG).show();
}
catch(NumberFormatException e){
//Toast.makeText(getApplicationContext(), "Could not get number" + life , Toast.LENGTH_LONG).show();
}
}
catch(java.io.FileNotFoundException e){
//have not created it yet
}
catch(Throwable t){
Toast.makeText(getApplicationContext(), "Exception: "+t.toString(), Toast.LENGTH_LONG).show();
}
}
感謝。 BufferedReaderメソッドを使用して、forループがどのように見えたらいいですか?私はちょうどjavaに新しいですか? –
@RyanWing答えにサンプルコードを追加しました – volatilevar
私が持っていたものから追加したコードを実装しました。私はあなたのコードを含むときにFileInputStreamとDataInputStreamを保持し、テストとして2つの文字列変数を使用しています。私は結果をトーストするときに、テキストファイルの最初の行の代わりに2回、テキストファイルの2行目の代わりに2行目のテキストファイルを取得しています。なぜそれが起こっているのだろうか? –