1.文件存储数据使用了Java中的IO操作来进行文件的保存和读取,只不过Android在Context类中封装好了输入流和输出流的获取方法。
创建的存储文件保存在/data/data/<package name>/files文件夹下。

2.操作。
保存文件内容:通过Context.openFileOutput获取输出流,参数分别为文件名和存储模式。
读取文件内容:通过Context.openFileInput获取输入流,参数为文件名。
删除文件:Context.deleteFile删除指定的文件,参数为将要删除的文件的名称。
获取文件名列表:通过Context.fileList获取files目录下的所有文件名数组。
*获取文件路径的方法:
绝对路径:/data/data/<package name>/files/filename
Context:Context.getFilesDir()可以获取到”/data/data/<package name>/files”

3.四种文件保存的模式。
Context.MODE_PRIVATE 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下写入的内容会覆盖原文件的内容。
Context.MODE_APPEND 检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
MODE_WORLD_READABLE 表示当前文件可以被其他应用读取。
MODE_WORLD_WRITEABLE 表示当前文件可以被其他应用写入。
在使用模式时,可以用”+”来选择多种模式,比如openFileOutput(FILENAME, Context.MODE_PRIVATE + MODE_WORLD_READABLE);

下面通过程序来演示下文件存储的使用。完整代码下载:

点击链接下载android_files
大小 : 44.29 kB
下载次数 : 0
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
/**  * MainActivity  *  * @author zuolongsnail  *  */  public class MainActivity extends Activity {  private EditText writeET;  private Button writeBtn;  private TextView contentView;  public static final String FILENAME = "setting.set";  @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  writeET = (EditText) findViewById(R.id.write_et);  writeBtn = (Button) findViewById(R.id.write_btn);  contentView = (TextView) findViewById(R.id.contentview);  writeBtn.setOnClickListener(new OperateOnClickListener());  }  class OperateOnClickListener implements OnClickListener {  @Override  public void onClick(View v) {  writeFiles(writeET.getText().toString());  contentView.setText(readFiles());  System.out.println(getFilesDir());  }  }  // 保存文件内容  private void writeFiles(String content) {  try {  // 打开文件获取输出流,文件不存在则自动创建  FileOutputStream fos = openFileOutput(FILENAME,  Context.MODE_PRIVATE);  fos.write(content.getBytes());  fos.close();  } catch (Exception e) {  e.printStackTrace();  }  }  // 读取文件内容  private String readFiles() {  String content = null;  try {  FileInputStream fis = openFileInput(FILENAME);  ByteArrayOutputStream baos = new ByteArrayOutputStream();  byte[] buffer = new byte[1024];  int len = 0;  while ((len = fis.read(buffer)) != -1) {  baos.write(buffer, 0, len);  }  content = baos.toString();  fis.close();  baos.close();  } catch (Exception e) {  e.printStackTrace();  }  return content;  }  } 

程序截图:

提供一个文件存储数据的工具类:

123456789101112131415161718192021222324252627282930313233343536373839404142434445
/**  * 文件存储数据方式工具类  *  * @author zuolongsnail  */  public class FilesUtil {  /**  * 保存文件内容  *  * @param c  * @param fileName  * 文件名称  * @param content  * 内容  */  private void writeFiles(Context c, String fileName, String content, int mode)  throws Exception {  // 打开文件获取输出流,文件不存在则自动创建  FileOutputStream fos = c.openFileOutput(fileName, mode);  fos.write(content.getBytes());  fos.close();  }  /**  * 读取文件内容  *  * @param c  * @param fileName  * 文件名称  * @return 返回文件内容  */  private String readFiles(Context c, String fileName) throws Exception {  ByteArrayOutputStream baos = new ByteArrayOutputStream();  FileInputStream fis = c.openFileInput(fileName);  byte[] buffer = new byte[1024];  int len = 0;  while ((len = fis.read(buffer)) != -1) {  baos.write(buffer, 0, len);  }  String content = baos.toString();  fis.close();  baos.close();  return content;  }  } 

更多相关文章

  1. [Android][Android(安卓)Studio] *.jar 与 *.aar 的生成与*.aar
  2. Android面试题笔记(一)
  3. Android(安卓)proguard混淆编译的问题
  4. Android反编译工具介绍
  5. Android.mk详解
  6. Android(安卓)Studio开发Groovy
  7. 配置android app 方法数超过65k问题
  8. 关于Android(安卓)Studio打包混淆以及上传mapping文件
  9. Android(安卓)DownLoadManager的使用

随机推荐

  1. asp.net core实例教程之环境设置
  2. asp.net core实例详解四(Project.json文件
  3. 开发中常遇到的问题--日期格式化转换.
  4. 什么是asp.net core?介绍Asp.Net Core的优
  5. asp.net core实例详解三(新建项目)
  6. vs 中引用的问题--出现小叹号
  7. 推荐10款常用的获取本机ip用法,欢迎下载!
  8. asp.net core实例详解二(环境设置)
  9. 有关浮点数类型的文章推荐3篇
  10. C# 一些面试试题的实例教程