Android数据存储--文件存储

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



Android数据存储--文件存储 Android数据存储--文件存储


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; } }


转载于:https://www.cnblogs.com/android-html5/archive/2011/08/06/2534121.html