这是存储和读取一些文本数据的最有效方法吗?

时间:2012-01-19 04:25:47

标签: android file

我在考虑有很多方法可以将数据存储在文件中,我发现其中一个是使用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 个答案:

答案 0 :(得分:1)

Reader / Writer类层次结构是面向字符的,输入流/输出流类层次结构是面向字节的。 基本上有两种类型的streams.Byte流,用于处理字节流和字符流以处理字符流。

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

字符流通常是字节流的“包装器”。字符流使用字节流来执行物理I / O,而字符流处理字符和字节之间的转换。例如,FileReader使用FileInputStream,而FileWriter使用FileOutputStream。

因此,如果您想要处理字符(读取文本文件),请转到面向字符的流(读取器/写入器)。但是如果你想独立于它的文件类型来处理内容,那就去面向字节的流。