苏州建设厅网站,做电影网站多少带宽,宁波专业seo外包,架构图在什么网站可以做读书笔记系列#xff1a;第一行代码 Android
6.1 持久化技术简介
三种数据持久化方式#xff1a;文件存储、SharedPreference存储以及数据库存储#xff0c;除此之外还可以存储在SD卡中#xff08;不安全#xff09;
6.2 文件存储
该方法不对存储的内容做格式化处理都…读书笔记系列第一行代码 Android
6.1 持久化技术简介
三种数据持久化方式文件存储、SharedPreference存储以及数据库存储除此之外还可以存储在SD卡中不安全
6.2 文件存储
该方法不对存储的内容做格式化处理都是直接保存到文件中所以适合存一些简单的文本数据或二进制数据要想存复杂文本数据就需要自己定义格式规范方便解析。
6.2.1 将数据存储到文件中
Context类中有一个openFileOutput方法可将数据保存到指定文件中需要两个参数第一个是文件名文件名不包含路径所有都默认存在/data/data/packagename/files/目录下第二个参数是文件的操作模式MODE_PRIVATE和MODE_APPEND一个是覆盖一个是追加。 openFileOutput()方法返回的是FileOutputStream对象得到这个对象后就可以使用JAVA方式将数据写入到文件中了以下是一段简单的示例
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();}}}一个保存下来输入值的具体案例
public class MainActivity extends AppCompatActivity {private EditText edit;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);edit (EditText) findViewById(R.id.edit);}Overrideprotected void onDestroy(){super.onDestroy();String inputText edit.getText().toString();save(inputText);}public void save(String inputText){FileOutputStream out null;BufferedWriter writer null;try{out openFileOutput(data, Context.MODE_PRIVATE);writer new BufferedWriter(new OutputStreamWriter(out));writer.write(inputText);} catch (IOException e) {e.printStackTrace();} finally {try {if (writer ! null){writer.close();}}catch (IOException e){e.printStackTrace();}}}
}从文件中读取数据
Context类中还有一个OpenFileInput方法可以从文件中读取数据它只接收文件名参数并返回FileInputStream对象得到这个对象后就可以用JAVA流的方式读取出来数据了 以下是一段读文本数据的示例
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();}onCreate()方法中调用 load()方法来读取文件中存储的文本内容如果读到的内容不为null就调用EditText的setText()方法将内容填充到EditText里并调用setSelection()方法将输入光标移动到文本的末尾位置以便于继续输人然后弹出一句还原成功的提示。 注意上述代码在对字符串进行非空判断的时候使用了 Textutils.isEmpty()方法它可以一次性进行两种空值的判断。当传入的字符串等于 null 或者等于空字符串的时候这个方法都会返回 true就不用再分别单独判断了。