数据存储与访问
很多时候我们开发的软件需要对处理后的数据进行存储,以供再次访问,Android为数据存储提供了如下几种方式:
·文件
·SharedPreferences(参数)
·SQLite数据库
·内容提供者(Content provider)
·网络
下面演示文件的存储与读取:
activity_main.xml
[html]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/text1" />
<EditText
android:id="@+id/filename"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="abc.txt" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="文件内容" />
<EditText
android:id="@+id/filecontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minLines="3" />
<Button
android:id="@+id/myButtonSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存" />
<Button
android:id="@+id/myButtonRead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取" />
</LinearLayout>
FileServise.java
[java]
package com.example.service;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import android.content.Context;
public class FileServise {
/**
* 保存文件
*
* @param filename
* 文件名称
* @param filecontent
* 文件内容
* @return
*/
private Context context;
public FileServise(Context context) {
super();
this.context = context;
}
public void savefile(String filename, String filecontent)
throws IOException {
/*
* IO 技术 看过我的JAVASE IO流的 写起来很轻松,不过这里使用安卓的Context 对象可以快速得到输出流 第二个参数是
* 私有操作模式,创建出来的文件只能被本应用访问。 同时,采用私有模式创建的文件, 会覆盖源文件的内容。
*/
FileOutputStream fos = context.openFileOutput(filename,
Context.MODE_PRIVATE);
fos.write(filecontent.getBytes());
fos.close();
}
/**
* 文件读取
*
* @param filename
* @return
* @throws IOException
*/
public String readfile(String filename) throws IOException {
FileInputStream fis = context.openFileInput(filename);
// 写入内存中的方法
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
// 获取
byte[] data = baos.toByteArray();
return new String(data);
}
}