当前位置: 代码迷 >> Android >> 玩转Android-组件篇-数据储存之File
  详细解决方案

玩转Android-组件篇-数据储存之File

热度:71   发布时间:2016-05-01 16:49:01.0
玩转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"    >	<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();    	}    }}

?

运行结果如下:

?

?

?

?

?

  相关解决方案