【Android】数据存储-java IO流文件存储
1.数据持久化:将在内存中的瞬时数据保存在存储设备中。瞬时数据:设备关机数据丢失。持久化技术提供一种机制可以让数据在瞬时状态和持久状态之间转换。
2.Android中简单的三种存储方式:文件存储、SharedPreference 存储以及数据库存储。
1.文件存储 :不对数据作任何处理,将数据原封不动地存储到文件中,适合存储一些简单的文本数据和二进制数据。
a.将数据存储到文件中
Context类提供了一个openFileOutput()方法,可以用于将数据存储到文件中。这个方法接收两个参数,第一个参数是文件名(文件名不能包含路径,默认路径为/data/data/<packagename>/files/),第二个参数是文件的操作模式,主要有MODE_PRIVATE 和 MODE_APPEND两种模式,前者是默认模式,当指定同样文件名时,所写入内容会覆盖掉原文件的内容,后者表示文件名相同时将内容追加到原文件内容后,不存在该文件则创建新文件。openFileOutput 方法返回一个FileOutputStream对象。
public void save() { String data = "Data to save"; FileOutputStream out = null; BufferedWriter writer = null; try { out = openFileOutput("data", Context.MODE_PRIVATE); writer = new BufferedWriter(new OutputStreamWriter(out)); writer.write(data); } catch (IOException e) { e.printStackTrace(); } finally { try { if (writer != null) { writer.close(); } } catch (IOException e) { e.printStackTrace(); } } }
/*
*步骤:
*1.通过openFileOutput()方法的到一个FIleOutputStream对象
*2.通过FileOutputStream对象构造出一个OutputStreamWriter对象
*3.通过OutputStreamWriter对象构造出BufferedWriter对象
*4.通过BufferedWriter将文本内容写入文件
*/
b.从文件中读取数据
类似于将数据存储到文本中,Context类中提供了一个openFIleInput()方法,用于从文本中读取数据。这个方法只接收一个参数即要读取文件的文件名,系统在默认目录中找到这个文件后返回一个FilleInputStream对象,得到这个对象后通过java IO流就可以将数据读取出来了。
public String load() { FileInputStream in = null; BufferedReader reader = null; StringBuilder content = new StringBuilder(); try { in = openFileInput("data"); 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(); } } } return content.toString(); }
/*
*1.先通过openFileInput获取到FileInputStream对象
*2.通过FileInputStream获取到InputStreamReader对象
*3.通过InputSTreamReader获得BufferedReader对象
*4.通过BufferedReader进行一行行读取,把文件中所有的文本内容全部读取出来并存在StringBuilder中
*5.将读取到的内容返回
*/