2012-01-19 9 views
0

私はファイルにデータを格納する方法がいくつかあると考えていますが、これはbuffedinputstreamを使用していることがわかりましたが、実際にはわかりません。 私がこのように使っているなら、それは最も速いでしょうか? 他の提案はありますか?私はちょうどファイルioをより速くしたい!は、これはテキストデータを保存して読むのに最も効果的な方法ですか?

public ArrayList<String> testReadingTxtFromFile(){ 
     ArrayList<String> result = null; 
     try { 
     FileInputStream fIn = openFileInput("cacheingtext.txt"); 
     InputStreamReader isr = new InputStreamReader(fIn); 
     BufferedReader reader = new BufferedReader(isr); 
     String line; 
     while((line = reader.readLine())!= null){ 
      String[] datas = line.split(","); 
      Log.i("check", datas.length+""); 
      for(String data:datas){ 
       Log.i("check", data); 
       result.add(data); 
      } 
     } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return result; 
    } 


public void testWritingTxtToFile(String[] messages){ 
    try { 
     FileOutputStream fo = openFileOutput("cacheingtext.txt", MODE_WORLD_READABLE); 
     OutputStreamWriter osw = new OutputStreamWriter(fo); 
     BufferedWriter writer = new BufferedWriter(osw); 
     int size = messages.length; 
     for(int i=0;i<size;i++){ 
      writer.write(messages[i]); 
      writer.write(","); 
     Log.i("check", "write "+messages[i]); 
     } 
     writer.flush(); 
     writer.close(); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

答えて

1

リーダ/ライタクラス階層は文字指向であり、入力ストリーム/出力ストリームクラス階層はバイト指向です。 基本的には、streams.Byteストリームには2つのタイプがあり、バイトストリームと文字ストリームを処理するために使用されます。

あなたのケースでは、バイト指向のストリームを使用しています。

文字ストリームは、多くの場合、バイトストリームの「ラッパー」です。文字ストリームは物理I/Oを実行するためにバイトストリームを使用し、文字ストリームは文字とバイトの間の変換を処理します。たとえば、FileReaderはFileInputStreamを使用し、FileWriterはFileOutputStreamを使用します。

キャラクター(テキストファイルを読む)に対処する場合は、キャラクター指向のストリーム(リーダー/ライター)を使用してください。しかし、ファイルの種類とは無関係にコンテンツを処理したい場合は、バイト指向のストリームにしてください。

+0

ああ、私は参照してください。 テキストに焦点を当てればfilereaderが良いですか?? – rex

+0

はい...文字ストリーム(ファイルリーダ/ライタ)の主な利点は、特定の文字エンコーディングに依存しないプログラムを簡単に作成でき、国際化が容易であることです。 –

+0

ああ、私は 多くのおかげで、多くを学ぶ – rex

関連する問題