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

相关问题