2011-12-07 15 views
1

res/raw/textに置かれたテキストファイルから読みたい 読み込みに成功しましたが、出力のすべての行の後に奇妙な文字がありますこのようなもの "[]"。 この文字は、ソースファイル(テキスト)に新しい行がある出力のすべての行の最後にあります。 はどのようにテキストファイルを作成しました。..すべての行からこの文字を削除する方法Androidのテキストファイル(rawディレクトリ)が正しく読み取られない

public class HelpActivity extends Activity{ 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.help); 
    TextView textview = (TextView)findViewById(R.id.TextView_HelpText); 
    textview.setText(readTxt()); 

} 
private String readTxt() { 
    InputStream is = getResources().openRawResource(R.raw.text); 
     ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); 
     int i; 

     try 
     { 

      i = is.read(); 
      while (i != -1) 
      { 
       byteArray.write(i); 
       i = is.read(); 
      } 
      is.close(); 
     } 
     catch (IOException e) 
     { 
      // TODO Auto-generated catch block 

      e.printStackTrace(); 
     } 
     return byteArray.toString(); 

}

}

答えて

2

おそらく、不要な、または書式なしのCR/LF文字を取得している可能性があります。これは、テキストを新しい行に分割するものです。 Windowsの場合は、行の最後にCRとLFの両方が表示されます。 OS XとLinuxにはLFだけがあります。 (旧式のMacにはCRしかありませんでした)

Windowsにテキストファイルを保存し、それをAndroid(Linux)に表示していると、整形されていないテキストに余分なCR文字が表示されることがあります。各行。それを修正する

https://stackoverflow.com/a/2549222/324625

+0

おかげstevehbから部分的に借用この

private String readTxt() { InputStream is = getResources().openRawResource(R.raw.text); BufferedReader r = new BufferedReader(new InputStreamReader(is)); StringBuilder total = new StringBuilder(); String line; while ((line = r.readLine()) != null) { total.append(line); } return total.toString(); } 

ような何かを試してみてください..私はあなたの答えから私の問題を解決している:) – Itian

0

を知らないのですか? OSが行末の文字を処理する方法には違いがあります。 Unix/LinuxのEOL文字はWindowsのEOL文字とは異なりますが、これは違いを説明するかもしれません。