android数据存储持久化操作
2015-12-19 11:20
585 查看
想象一下,当我们辛辛苦苦填写的数据,在一个错误的操作之后付之东流,那样的心情
可想而知,今天我们就看看在手机上如何实现数据的存储。
首先创建一个新的android工程,修改activity_main.xm。删除自带控件代码修改l如下:
接着是MainActivity.java文件.在onCreate方法外定义一个EditText和之前的控件进行绑定
在onCreate方法中添加
注意,这里除了自动生成的onCreate方法之外,还需要重写onDestroy方法,是为了在活动销毁时,调用我们写好的方法
文件写入的方法
接下来在模拟器中进行测试,在文本框里随便输入数据,点击返回键,在DDMS视图中File Explorer下,点击data-->data-->你的项目名称文件-->files下是不是有了一个文件
点击第一个,把文件导出到桌面上,打开看看是不是我们刚才写入的数据!
如果是正面成功了!
既然能存储到手机上面,那能不能从手机上面读取呢?答案是肯定的
在之前的acitvitu_main.xml中修改onCreate方法,添加如下代码:
// 读取操作
String inputText = load();
// 判断文本框是否为空
if (!TextUtils.isEmpty(inputText)) {
// 给文本框赋值
txt.setText(inputText);
// 将光标移动到文本后面
txt.setSelection(inputText.length());
Toast.makeText(this, "读取文本成功", Toast.LENGTH_SHORT).show();
load方法:该方法得到文件里的文本内容
// 读取文件操作
private String load() {
/**
* 准备操作: 创建流和缓冲
*/
FileInputStream fis = null;
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try {
// 要读取文件的名称
fis = openFileInput("data.txt");
br = new BufferedReader(new InputStreamReader(fis));
String in = "";
while ((in = br.readLine()) != null) {
sb.append(in);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
此时运行程序看看结果,是不是在EditText文本框里有了上次的值了,那表示成功了,恭喜你,在学习android的路上又向前迈了一步!
可想而知,今天我们就看看在手机上如何实现数据的存储。
首先创建一个新的android工程,修改activity_main.xm。删除自带控件代码修改l如下:
<EditText android:id="@+id/txt" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入内容" />
接着是MainActivity.java文件.在onCreate方法外定义一个EditText和之前的控件进行绑定
private EditText txt = null;
在onCreate方法中添加
txt = (EditText) findViewById(R.id.txt);
注意,这里除了自动生成的onCreate方法之外,还需要重写onDestroy方法,是为了在活动销毁时,调用我们写好的方法
@Override protected void onDestroy() { super.onDestroy(); // 定义一个变量去接收EditText中的值 String str = txt.getText().toString(); // 调用写入文件的方法 save(str); }
文件写入的方法
private void save(String str) { // 定义一个文件输入流 FileOutputStream out = null; // 定义缓冲流 BufferedWriter writer = null; try { /** * 参数1:要保存的文件的名称 * 参数2:操作模式 * a.默认操作模式,MODE_APPEND,如果存在同样名字的文件,会覆盖源文件里的内容 * b.MODE_PRIVATE,如果存在同样名字的文件,会在源文件里的内容后追加数据 * 还有2种模式,由于允许其他程序对文件进行修改,存在安全漏洞,所以在android4.2版本中被废弃了 * c.MODE_WORLD_READABLE * d.MODE_WORLD_WRITEABLE */ out = openFileOutput("data.txt", Context.MODE_PRIVATE); writer = new BufferedWriter(new OutputStreamWriter(out)); writer.write(str); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (writer != null) { writer.close(); } } catch (IOException e) { e.printStackTrace(); } } }
接下来在模拟器中进行测试,在文本框里随便输入数据,点击返回键,在DDMS视图中File Explorer下,点击data-->data-->你的项目名称文件-->files下是不是有了一个文件
点击第一个,把文件导出到桌面上,打开看看是不是我们刚才写入的数据!
如果是正面成功了!
既然能存储到手机上面,那能不能从手机上面读取呢?答案是肯定的
在之前的acitvitu_main.xml中修改onCreate方法,添加如下代码:
// 读取操作
String inputText = load();
// 判断文本框是否为空
if (!TextUtils.isEmpty(inputText)) {
// 给文本框赋值
txt.setText(inputText);
// 将光标移动到文本后面
txt.setSelection(inputText.length());
Toast.makeText(this, "读取文本成功", Toast.LENGTH_SHORT).show();
load方法:该方法得到文件里的文本内容
// 读取文件操作
private String load() {
/**
* 准备操作: 创建流和缓冲
*/
FileInputStream fis = null;
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try {
// 要读取文件的名称
fis = openFileInput("data.txt");
br = new BufferedReader(new InputStreamReader(fis));
String in = "";
while ((in = br.readLine()) != null) {
sb.append(in);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
此时运行程序看看结果,是不是在EditText文本框里有了上次的值了,那表示成功了,恭喜你,在学习android的路上又向前迈了一步!
相关文章推荐
- Fragment Android(八)
- [置顶] Android 购物选择颜色、尺码实现(二)
- 《android studio3》在多个activity之间传递参数
- android:windowSoftInputMode属性
- 《android studio2》activity生命周期
- Android R文件丢失或R cannot be resolved to a variable
- Android中使用 listView 绘制表格
- Android不继承ViewPager实现自动滚动翻页功能
- greendao的使用
- android怎么在launcher改动内置apk的icon
- 友善之臂4412开发板android应用层通过jni直接控制除LED、蜂鸣器外的其它IO口,系统直接重启问题
- 从android应用程序跳转到系统的各个设置页面
- Android aidl Binder 机制学习
- Android Studio学习记录
- Android Studio中快捷键(持续更新)
- Android SDK安装、Android版本下载
- Android开发中验证码的生成
- Android开发环境的搭建之(五)DDMS的测试
- Android通讯录数据库操作
- 访问android平台的通话记录CallLog