Android开发教程:数据存取之File浅析


Android系统中提供了一种文件读写的方法,可以将一些数据以文件的形式保存在设备中。比如一些word文档,PDF文档,图片,音频,视频文件等。

使用文件读写方法的步骤:

1.调用Context.openFileInput()方法获得Java文件输入流(FileInputStream)

2.调用Context.openFileOutput()方法获得java文件输出流(FileOutputStream)

3.使用Resources.openRawResource(R.raw.DataFile)方法返回InputStream

   下面的具体实例,在一个Activity里面创建两个EditText和两个Button,第一个EditText和Button将EditText的内容写到文件file.txt文件中。第二个EditText和Button将内容从文件file.txt中读取出来显示。文件被默认保存在/data/data/package/files下面。

 

 MainActivity.java

  1. package com.android.file;  
  2.  
  3. import java.io.FileInputStream;  
  4. import java.io.FileOutputStream;  
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10. import android.widget.EditText;  
  11.  
  12. public class MainActivity extends Activity {  
  13.     //声明文件名字符串常量  
  14.     private static final String FILE_NAME="file.txt";  
  15.     private Button writeBtn,readBtn;  
  16.     private EditText writeText,readText;  
  17.     @Override 
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.main);  
  21.         writeBtn = (Button)findViewById(R.id.Button1);  
  22.         readBtn = (Button)findViewById(R.id.Button2);  
  23.           
  24.         writeText = (EditText)findViewById(R.id.EditText1);  
  25.         readText = (EditText)findViewById(R.id.EditText2);  
  26.           
  27.         writeBtn.setOnClickListener(new OnClickListener() {  
  28.             @Override 
  29.             public void onClick(View v) {  
  30.                 //写内容  
  31.                 write(writeText.getText().toString());  
  32.             }  
  33.         });  
  34.           
  35.         readBtn.setOnClickListener(new OnClickListener() {  
  36.             @Override 
  37.             public void onClick(View v) {  
  38.                 //读内容  
  39.                 readText.setText(read());  
  40.             }  
  41.         });  
  42.     }  
  43.       
  44.     private String read(){  
  45.         try {  
  46.             //实例化文件输入流对象  
  47.             FileInputStream fis = openFileInput(FILE_NAME);  
  48.             //定义缓存数组  
  49.             byte[] buffer = new byte[fis.available()];  
  50.             //读到缓冲区  
  51.             fis.read(buffer);  
  52.             return new String(buffer);  
  53.         } catch (Exception e) {  
  54.             e.printStackTrace();  
  55.         }  
  56.         return null;  
  57.     }  
  58.       
  59.     private void write(String content){  
  60.         try {  
  61.             //实例化文件输出流  
  62.             //openFileOutput(String name, int mode)  
  63.             //第一个参数文件名  
  64.             //第二个是模式   
  65.             //MODE_APPEND表示要创建的文件存在则新写入的数据不会覆盖以前的数据。  
  66.             FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);  
  67.             //写内容  
  68.             fos.write(content.getBytes());  
  69.             //关闭文件流  
  70.             fos.close();  
  71.         } catch (Exception e) {  
  72.             e.printStackTrace();  
  73.         }  
  74.     }  
  • 1
  • 2
  • 下一页

相关内容