在android应用开发中,有时需要对应用中的数据进行保存;Android保存数据的方式有一下几种:

文件 SharedPreference SqlLite数据库 ContentProvider 网络;

对于文件存储数据,android为每个应用提供了独立的文件存储位置:data/data/${yourapp}/files;

保存数据到文件中时,可以通过context对象的openFileOutput(fileName, Context.MODE_PRIVATE);方法获取对应文件夹下指定文件的输出流;

然后通过outputStream的write(byte),将数据保存到文件中;

这个方法的第一个参数时指定的文件名,第二个参数时该文件被操作时的权限;Context.MODE_PRIVATE表示私有权限,代表该文件只能被本应用读写,并且新增的内容会覆盖原有内容;

还有三种权限分别是:

Context.MODE_APPEND:检查时否存在文件,存在就追加模式,不存在就创建,也为私有模式,其他应用不可用。

Context.MODE_WORLD_READABLE:该模式允许其他应用从该文件中读取内容。

Context.MODE_WORLD_WRITEABLE:该模式允许其他应用相该文件写入内容。

另外:

Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE:其他应用可读可写。

Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE+Context.MODE_APPEND:其他应用可读可写,可写的时候是追加模式;

具体例子:

MainActivity:

package tk.sweetvvck.fileopt;import java.io.IOException;import tk.sweetvvck.service.FileOptService;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) this.findViewById(R.id.save_button);button.setOnClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic void onClick(View v) {if(v.getId() == R.id.save_button){EditText fileNameText = (EditText) this.findViewById(R.id.file_name_text);EditText fileContentText = (EditText) this.findViewById(R.id.file_content_text);String fileName = fileNameText.getText().toString();String fileContent = fileContentText.getText().toString();FileOptService service = new FileOptService(this.getApplicationContext()); try {service.saveFile(fileName, fileContent);Toast.makeText(this.getApplicationContext(), R.string.save_successfully, Toast.LENGTH_SHORT).show();} catch (IOException e) {Toast.makeText(this.getApplicationContext(), R.string.save_failed, Toast.LENGTH_SHORT).show();e.printStackTrace();}}}}

文件保存与读取业务类:

package tk.sweetvvck.service;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import android.content.Context;/** *  * @author sweetvvck * */public class FileOptService {private Context context;public FileOptService(Context context) {this.context = context;}/** * 保存文件 * @param fileName * @param fileContent * @throws IOException */public void saveFile(String fileName, String fileContent) throws IOException {FileOutputStream out = context.openFileOutput(fileName, Context.MODE_PRIVATE);out.write(fileContent.getBytes());out.close();}/** * 读取文件中的内容 * @param fileName * @return * @throws IOException */public String readFile(String fileName) throws IOException{FileInputStream in = context.openFileInput(fileName);ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024];int len = 0;while((len = in.read(buffer)) != -1){out.write(buffer, 0, len);}byte[] data = out.toByteArray();in.close();out.close();return new String(data);}}
单元测试类:

import java.io.IOException;import tk.sweetvvck.service.FileOptService;import android.test.AndroidTestCase;import android.util.Log;public class FileServiceTest extends AndroidTestCase {private static final String TAG = "FileServiceTest";public String testReadFile() throws IOException{FileOptService service = new FileOptService(this.getContext());String result = service.readFile("吧");Log.i(TAG, result);return null;}}

Android 文件保存与读取_第1张图片









更多相关文章

  1. 作业三——观察者模式在Android广播机制上的应用
  2. Android 根文件系统分析(1)
  3. [android] 保存文件到手机内存
  4. Android 将APK文件安装到AVD中并分析其界面结构
  5. 移动开发:fb的-app.xml文件
  6. android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnec
  7. Android 文件的上传
  8. Android中音乐文件的信息详解【安卓源码解析二】

随机推荐

  1. Android AIDL 教程 (一)—— 简单的示例
  2. Android中Toast的用法简介
  3. android 名词搜集
  4. Android问题集锦转载之四:Android(安卓)ND
  5. Android关于Activity切换效果的实现加强
  6. Android 智能问答机器人的实现
  7. Android多媒体学习十五:使用在内置的Camer
  8. Android 中的SparseArray
  9. Android与JS之间的互相调用交互(二)
  10. android studio --terminal 命令编译项目