所有数据都是原封不动地保存到文件当中, 因而它比较适合用于存储一些简单的文本数据或者二进制数据。
如果你想使用文件存储的方式来保存一些较为复杂的文本数据,就要定义一套自己的格式规范,这样方便于
之后将数据从文件中重新解析出来
文件存储的核心是:
Context中提供了
openFileOutput和openFileInput方法,
之后就利用java的个种流来进行读写操作就可以了。
openFileOutput(name, mode);
可以用于将数据存储到指定文件中,第一个参数是文件名
(不包括路径)文件默认存储到(File Explorer)/data/data/<packagename>/file/的目录下。
第二个参数是文件操作模式,有两种可选Context.MODE_PRIVATE和Context.MODE_APPEND
Context.MODE_PRIVATE是默认模式,当指定同样文件名的时候,所写的内容将会覆盖原文件中的内容
Context.MODE_APPEND则表示如果该文件已存在就往里面追加内容,不存在就创建新文件
openFileInput(name)
用于从文件中读取数据,只有一个参数就是文件名,然后系统就会自动到
/data/data/<packagename>/file/目录下加载这个文件并返回FileInputStream
对象,再用java流方式将数据读取出来就可以了
我写了一个例子核心代码如下:
public class MainActivity extends Activity {
private EditText edit_file;//输入要保存数据输入框
private EditText edit_zhanshishuju;//展示拿到的数据输入框
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit_file=(EditText) findViewById(R.id.edit_file);
edit_zhanshishuju=(EditText) findViewById(R.id.edit_zhanshishuju);
}
/**
* 保存数据按钮
*
*/
public void btn_baocun(View v){
String editTextString=edit_file.getText().toString().trim();
saveData(editTextString);
}
/**
* 取出数据按钮
* 把取出来的数据显示到输入框中
*/
public void btn_quchu(View v){
//调用拿到数据方法
String inputText=load();
/* 判断文件中读到的数据是否为空
* TextUtils.isEmpty()是一个非常好的方法可以一次判断null和"";如果
* 是空就返回true
*
*/
if (!TextUtils.isEmpty(inputText)) {
edit_zhanshishuju.setText(inputText);
//调用setSelection把输入的光标移动到文本的末尾位置
edit_zhanshishuju.setSelection(inputText.length());
Toast.makeText(MainActivity.this, "数据去出成功", 10).show();
}
}
/**
* 存入数据
*/
public void saveData(String editTextString){
/*java中的流相对于程序,都是读入写出的原则
* */
FileOutputStream out=null;
BufferedWriter writer=null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(editTextString);
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭流
if (writer!=null) {
try {
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* 拿出数据
*/
public String load(){
FileInputStream in=null;
BufferedReader reader=null;
StringBuffer contentBuffer=new StringBuffer();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line="";
while ((line=reader.readLine())!=null) {
contentBuffer.append(line);
}
} catch (Exception e) {
}finally{
if (reader!=null) {
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return contentBuffer.toString();
}
}//class
如果没有明白下载我的例子
http://download.csdn.net/detail/zhaihaohao1/8337905