это самый эффективный способ хранения и чтения некоторых текстовых данных? - PullRequest
0 голосов
/ 19 января 2012

Я думаю о том, что есть несколько способов хранения данных в файле, я обнаружил, что один из них использует buffedinputstream, но я действительно не знаю, хорошо ли этоесли я использую, как это, это будет наиболее быстро?Есть ли другие предложения?я просто хочу сделать файл быстрее ...

 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 Ответ

1 голос
/ 19 января 2012

Иерархия классов Reader / Writer ориентирована на символы, а иерархия классов Input Stream / Output Stream ориентирована на байты.В основном существует два типа потоков. Потоки байтов, которые используются для обработки потока байтов, и потоки символов для обработки потоков символов.

В вашем случае я вижу, что вы используете поток, ориентированный на байты.

Потоки символов часто являются «обертками» для потоков байтов.Поток символов использует поток байтов для выполнения физического ввода-вывода, тогда как поток символов обрабатывает перевод между символами и байтами.Например, FileReader использует FileInputStream, а FileWriter использует FileOutputStream.

Итак, если вы хотите работать с символами (чтение текстовых файлов), перейдите к символьно-ориентированному потоку (Reader / Writer).Но если вы хотите обрабатывать содержимое независимо от типа файла, перейдите к байтовому потоку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...