原址:http://hualang.iteye.com/category/143855
我们可以将一些数据直接以文件的形式保存在设备中。例如,一些文本文件,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"
- >
- <EditText
- android:id="@+id/edit1"
- android:layout_width="fill_parent"
- android:layout_height="60dip"
- />
- <Button
- android:id="@+id/button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="写入数据"
- />
- <EditText
- android:id="@+id/edit2"
- android:layout_width="fill_parent"
- android:layout_height="60dip"
- />
- <Button
- android: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();
- }
- }
- }
运行结果如下: