2011-09-12 11 views
1

私はsdcardに保存されたtxtファイルを持っています。私は、ファイルからテキストを読み取るために、それがTextViewのであった。このコードを使用します。Android - txtファイルから特定の部分を読み取っていますか?

File root = Environment.getExternalStorageDirectory(); 
     File dir = new File (root.getAbsolutePath() + "/Bonbon info"); 
     dir.mkdirs(); 
     File f2 = new File(dir, "web_paket.txt"); 

     StringBuilder text2 = new StringBuilder(); 

     try { 
      BufferedReader br = new BufferedReader(new FileReader(f2)); 
      String line; 

      while ((line = br.readLine()) != null) { 
       text2.append(line); 
       text2.append('\n'); 
      } 
     } 
     catch (IOException e) { 
     } 

     TextView tv2 = (TextView)findViewById(R.id.textView2); 
     tv2.setText(text2); 

このコードが動作している、そしてそれは穴ファイルを読み込み、のTextViewに表示します。ファイルの特定の部分だけを読むことはできますか?65〜75位のキャラクター

答えて

0

これはテキストファイルに当てはまるかどうかわかりませんが、バイナリファイルの場合はファイルへのランダムアクセスが可能です。 http://download.oracle.com/javase/tutorial/essential/io/rafs.html

+0

どのファイルにもアクセスできます。唯一の注意点は、バイトの文字列を取得し、それらをテキストに変換する必要があることです。エンコーディング/デコード処理、改行処理などの処理をする必要があります。ファイルが比較的小さい場合は、それほど努力する価値はないかもしれません。ファイルを行単位で処理し、必要のないものをスキップするのはずっと簡単です。 –

1

ループ開始前にbr.skip(n)を呼び出し、スキップする文字数をnとします。それはあなたが読んでほしいビットの始まりにあなたを得るでしょう。ループにカウンターを入れて、十分な文字を読み終えたら停止してください。次のようなもの:

br.skip(64); 

    int charactersRead = 0; 

    while ((line = br.readLine()) != null && charactersRead < 10) { 
        text2.append(line); 
        text2.append('\n'); 
        charactersRead++; 
       } 

BufferedReader.skip() documentationを参照してください。

+0

その場合、readline()の代わりにread()を使いたいと思うでしょう。さもなければ、characterReadは行内のcharの数だけ増やすべきです。 – stealthcopter

関連する問題