文件存储
文件存储是Android中最基本的一种数据存储方式,它不对存储内容进行任何的格式化处理,所有数据都是原封不动的保存到文件中的,因而它比较适合用于存储一些简单的文本数据或二进制文件。
数据从内存中写入硬盘时的顺序是:缓冲流->转换流->文件流,数据从硬盘中读入内存时的顺序是:文件流->转换流->缓冲流,缓冲流是字符流,文件流是字节流,所以需要转换流在中间进行转换。一般Stream为字节,Writer和Reader为字符。
存文件:利用Context类提供的openFileOutput()方法获取FileOutputSteam对象,然后借助获取到的FileOutputStream对象构建出一个OutputStreamWriter对象,再借助OutputStreamWriter对象构建出一个BufferedWriter对象,最后就可以通过BufferedWriter对象进行写操作将文本内容写入文件了。
String text = "aaaaaaaaaaa" //要存入的内容 FileOutputStream out = null; BufferedWriter writer = null; try { out = openFileOutput("textdata", Context.MODE_PRIVATE); writer = new BufferedWriter(new OutputStreamWriter(out)); writer.write(text); }catch (IOException e){ e.printStackTrace(); }finally { try { if (writer != null){ writer.close(); } }catch (IOException e){ e.printStackTrace(); } }
(1)Context.MODE_PRIVATE,默认的操作模式,当指定同一文件名时,所写的内容会覆盖原文件的内容。
(2)Context.MODE_APPEND,该模式指定的文件名已存在时,就直接往文件里面追加内容,不存在就创建新文件。
(3)Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE , 这两个模式已经不建议使用了,因为这两个模式允许其他应用程序对本程序中的文件进行读写操作,容器引起安全漏洞。
读文件:利用Context类提供的openFileInput()方法获取FileInputSteam对象,然后借助获取到的FileInputStream对象构建出一个InputStreamReader对象,再借助InputStreamReader对象构建出一个BufferedReader对象,最后就可以通过BufferedReader对象进行读操作将读取文件内容了。
FileInputStream in = null; BufferedReader reader = null; StringBuilder content = new StringBuilder(); try { in = openFileInput("textoutput"); reader = new BufferedReader(new InputStreamReader(in)); String line =""; while ((line = reader.readLine()) != null){ content.append(line); } }catch (IOException e){ e.printStackTrace(); }finally { if (reader != null){ try { reader.close(); }catch (IOException e){ e.printStackTrace(); } } }
原文:https://www.cnblogs.com/mulin1999/p/13205277.html