2016-10-12 4 views
0

char []をバッファとして使用して、BufferedReaderのテキストを復元します。 whileループでは、-1になるまでループごとにすべてのテキストファイル200文字を読み取ります。 これは私のコードです。whileループでwhileループでchar []を使用してAndroidでテキストファイルを読むときに行が繰り返される

textView=(TextView) findViewById(R.id.textview); 
    textView.setMovementMethod(new ScrollingMovementMethod()); 
    String line; 
    char[] buffer=new char[200]; 
    InputStream is = this.getResources().openRawResource(R.raw.test); 
    InputStreamReader isr= new InputStreamReader(is); 
    BufferedReader bfr= new BufferedReader(isr); 
    try { 
     String s=""; 
     while(true) 
     { int temp= bfr.read(buffer,0,buffer.length); 
      if(temp<0) 
       break; 
      else s=s+new String(buffer); 
      } 
     textView.setText(s); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }finally { 
     try { 
      is.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

しかし、私の結果は衰えました。 最後の100文字を2回繰り返します。 理由を理解できません。あなたはread()によって返されたカウントを無視している

s=s+new String(buffer, 0, temp); 

でなければなりません

答えて

0
s=s+new String(buffer); 

。おそらくcharsetパラメータも追加するべきでしょう。

しかし、ファイル全体をメモリに読み込むべきではありません。一度に1つずつ処理してください。

+0

ありがとうございます! –

関連する問題