玩转Android---组件篇---数据存储之File
我们可以将一些数据直接以文件的形式保存在设备中。例如,一些文本文件,PDF文件,音频文件,视频文件和图片等。Android提供了文件读写的方法。
通过Context.openFileInput()方法获得标准JAVA文件输入流(FileInputStream),通过Context.openFileOutput()方法获得标准的java文件输出流(FileOutputStream)。使用Resources.openRawResource(R.raw.DataFile)方法返回InputStream。
?
接下来通过一个小例子来掩饰File读写文件。创建一个Activity,在其中放置两个EditText和连个Button,第一个EditText和Button将EditText的内容写到文件temp.txt文件中。第二个EditText和Button将内容从文件temp.txt中读取出来显示。问价被默认保存在/data/data/package/files下面。
?
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><EditTextandroid:id="@+id/edit1"android:layout_width="fill_parent"android:layout_height="60dip"/><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="写入数据"/><EditTextandroid:id="@+id/edit2"android:layout_width="fill_parent"android:layout_height="60dip"/><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="读取数据"/></LinearLayout>
?
FileTest.java
package org.hualang.file;import java.io.FileInputStream;import java.io.FileOutputStream;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class FileTest extends Activity { /** Called when the activity is first created. */private Button read,write;private EditText text1,text2;private static final String FILE_NAME="temp.txt"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); write=(Button)findViewById(R.id.button1); read=(Button)findViewById(R.id.button2); text1=(EditText)findViewById(R.id.edit1); text2=(EditText)findViewById(R.id.edit2); //设置按钮事件监听器 write.setOnClickListener(new OnClickListener() { public void onClick(View v) { //写内容 write(text1.getText().toString()); } }); read.setOnClickListener(new OnClickListener() { public void onClick(View v) { //读内容 text2.setText(read()); } }); } //读方法 private String read() { try { //实例化文件输入流对象 FileInputStream fis=openFileInput(FILE_NAME); //定义缓存数组 byte[] buffer=new byte[fis.available()]; //读取到缓冲区 fis.read(buffer); return new String(buffer); }catch(Exception e) { e.printStackTrace(); } return null; } //写方法 private void write(String content) { try { //实例化文件输入流 FileOutputStream fos=openFileOutput(FILE_NAME,MODE_APPEND); //写内容 fos.write(content.getBytes()); //关闭文件流 fos.close(); }catch(Exception e) { e.printStackTrace(); } }}
?
运行结果如下:
?
?
?
?
?