我在考虑有很多方法可以将数据存储在文件中,我发现其中一个是使用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();
}
}
答案 0 :(得分:1)
Reader / Writer类层次结构是面向字符的,输入流/输出流类层次结构是面向字节的。 基本上有两种类型的streams.Byte流,用于处理字节流和字符流以处理字符流。
我在你的案例中看到的是你正在使用面向字节的流。
字符流通常是字节流的“包装器”。字符流使用字节流来执行物理I / O,而字符流处理字符和字节之间的转换。例如,FileReader使用FileInputStream,而FileWriter使用FileOutputStream。
因此,如果您想要处理字符(读取文本文件),请转到面向字符的流(读取器/写入器)。但是如果你想独立于它的文件类型来处理内容,那就去面向字节的流。