Android中的文件存储机制是一种基本的存储数据的方式,其不对数据进行任何格式化的处理,所以这种方式适用于存储一些简单的文本数据或者二进制数据,一下以简单的Demo记录一下文件存储的实现;
Context中提供一个openFileOutput()的方法,将数据存储在指定的文件下;该方法实现传入两个数据参数,
其中一个是参数是文件名,注意这里的文件名不可以包含路径,它的默认讯储存位置是、data/datta/<package>files/下面 的,
第二个是文件的操作模式,其数值有两种,默认的是MODE_PRIVATE表示当指定的文件名相同时,写入的数据会覆盖源文件中的内容;另一个是MODE_APPEND表示的是如果文件夹下存在相同的文件名,则是往文件里追加内容;其实本来是的操作,模式有四个,其他两个MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE,由于这两个模式允许其他的程序操作文件,所以在以前的版本就取消了;
该Demo的具体实现功能比较简单,是在布局里建立一个EditText的控件,我们把输入的内容获取到,并且输出到文件中保存,如下:
XML布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_gravity="center" android:layout_height="match_parent"> <EditText android:id="@+id/edit" android:layout_width="368dp" android:layout_height="wrap_content" android:hint="在这里输入信息" /> </LinearLayout>
主要代码实现如下
package com.example.shanshui.filepersistence; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.EditText; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; public class MainActivity extends AppCompatActivity { private EditText ed1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed1= (EditText) findViewById(R.id.edit); } @Override protected void onDestroy() { super.onDestroy(); String input = ed1.getText().toString(); save(input); } private void save(String input) { FileOutputStream out = null; BufferedWriter writer = null; try{ out = openFileOutput("data", Context.MODE_PRIVATE); }catch (IOException e){ e.printStackTrace(); }finally { try{ if (writer != null){ writer.close(); } }catch (IOException e){ e.printStackTrace(); } } } }
代码的逻辑比较简单;MainActrivity中主要是先或取到输入框的内容,并在Ondestory*()中实现调用保存存储数据的功能;之后自定义保存数据的方法,在save()方法中,创建一个openFileOutput()方法,,此方法返回的是FileoutputStream();,得到这个方法 之后就可实现Java的数据写入,此时注意Java中的异常处理