2012-01-19 94 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

Reader/Writer類層次結構是面向字符的,而Input Stream/Output Stream類層次結構是面向字節的。 基本上有兩種類型的streams.Byte流,用於處理字節流和字符流以處理字符流。

我在你的案例中看到的是你正在使用一個面向字節的流。

字節流通常是字節流的「包裝」。字符流使用字節流來執行物理I/O,而字符流處理字符和字節之間的轉換。例如,FileReader使用FileInputStream,而FileWriter使用FileOutputStream。

所以,如果你想一般處理字符(閱讀文本文件),去面向字符流(讀者/作家)。但是如果你想處理內容而不管它是什麼類型的文件,那麼去面向字節流。

+0

哦,我明白了。 那麼,如果關注文本是filereader更好? – rex

+0

是的...字符流(文件讀取器/寫入器)的主要優點是可以很容易地編寫不依賴於特定字符編碼的程序,因此易於國際化。 –

+0

哦,我看到 非常感謝,學到很多東西 – rex

相關問題