Android数据存储--文件存储

 android平台的数据存储主要有5种方式:
   1.文件存储数据;
   2.使用SharedPreferences存储数据;
   3.SQLite数据库存储数据;
   4.使用ContentProvider存储数据;
   5.网络存储数据;
这里介绍文件存储:
文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,
提供了openFileInput()和openFileOutput()方法来读取设备上的文件。这种方式数据存储在data/data/<包名>下的files文件夹下。
当然文件也可以从程序的raw文件夹或Asset文件夹读取。



 


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

import org.apache.http.util.EncodingUtils;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class FileActivity extends Activity {
	public static final String ENCODING = "UTF-8";		//编码格式
	String fileName = "test.txt";//文件的名称
	String message = "这是一个关于文件I/O的示例。";	//写入和读出的数据信息
	TextView tv;
	Button btn1;
	Button btn2;
	Button btn3;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView) findViewById(R.id.tv);
        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);
        btn3 = (Button) findViewById(R.id.btn3);
        writeFileData(fileName, message);
        btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				 tv.setText(readFileData(fileName));
			}
		});
       btn2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				 tv.setText(getFromRow("test1.txt"));
			     
			}
		});
       btn3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				   tv.setText(getFromAsset("test2.txt"));	
			}
		});
       
    }
    //向指定文件中写入指定的数据
   public void writeFileData(String fileName,String message){
	   try {
		FileOutputStream fout =  openFileOutput(fileName, MODE_PRIVATE);
		byte [] bytes = message.getBytes(); //将要写入的字符串转换为byte数组
		fout.write(bytes);  //将byte数组写入文件
		fout.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
   }
   //打开指定文件,读取其数据,返回字符串对象
   public String readFileData(String fileName){
	   String result = "";
	   try {
		FileInputStream fin = openFileInput(fileName); //获得FileInputStream对象
		int length  =fin.available();  //获取文件长度
		byte [] buffer = new byte[length];
		fin.read(buffer);
		result= EncodingUtils.getString(buffer, ENCODING);  //将byte数组转换成指定格式的字符串
		fin.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
	return result;
   }
   
   //方法:从resource中的raw文件夹中获取文件并读取数据
 public String getFromRow(String fileName){
	 String result = "";
	 try {
		InputStream in =  getResources().openRawResource(R.raw.test1);
		int length = in.available();
		byte [] buffer  =new byte[length];
		in.read(buffer);
		result = EncodingUtils.getString(buffer, ENCODING);
		in.close();
	 } catch (Exception e) {
		 e.printStackTrace();
	 }
	 return result;
 }
     // 从asset中获取文件并读取数据
 public String getFromAsset(String fileName){
	 String result="";
	 try {
		InputStream in = getResources().getAssets().open(fileName);
		int length = in.available();									//获取文件的字节数
    	byte [] buffer = new byte[length];								//创建byte数组
    	in.read(buffer);												//将文件中的数据读取到byte数组中
    	result = EncodingUtils.getString(buffer, ENCODING);	
	} catch (Exception e) {
		e.printStackTrace();
	}
	return result;
 }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值