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.rar

view plain copy to clipboard print ?
  1. /**
  2. *MainActivity
  3. *
  4. *@authorzuolongsnail
  5. *
  6. */
  7. publicclassMainActivityextendsActivity{
  8. privateEditTextwriteET;
  9. privateButtonwriteBtn;
  10. privateTextViewcontentView;
  11. publicstaticfinalStringFILENAME="setting.set";
  12. @Override
  13. publicvoidonCreate(BundlesavedInstanceState){
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. writeET=(EditText)findViewById(R.id.write_et);
  17. writeBtn=(Button)findViewById(R.id.write_btn);
  18. contentView=(TextView)findViewById(R.id.contentview);
  19. writeBtn.setOnClickListener(newOperateOnClickListener());
  20. }
  21. classOperateOnClickListenerimplementsOnClickListener{
  22. @Override
  23. publicvoidonClick(Viewv){
  24. writeFiles(writeET.getText().toString());
  25. contentView.setText(readFiles());
  26. System.out.println(getFilesDir());
  27. }
  28. }
  29. //保存文件内容
  30. privatevoidwriteFiles(Stringcontent){
  31. try{
  32. //打开文件获取输出流,文件不存在则自动创建
  33. FileOutputStreamfos=openFileOutput(FILENAME,
  34. Context.MODE_PRIVATE);
  35. fos.write(content.getBytes());
  36. fos.close();
  37. }catch(Exceptione){
  38. e.printStackTrace();
  39. }
  40. }
  41. //读取文件内容
  42. privateStringreadFiles(){
  43. Stringcontent=null;
  44. try{
  45. FileInputStreamfis=openFileInput(FILENAME);
  46. ByteArrayOutputStreambaos=newByteArrayOutputStream();
  47. byte[]buffer=newbyte[1024];
  48. intlen=0;
  49. while((len=fis.read(buffer))!=-1){
  50. baos.write(buffer,0,len);
  51. }
  52. content=baos.toString();
  53. fis.close();
  54. baos.close();
  55. }catch(Exceptione){
  56. e.printStackTrace();
  57. }
  58. returncontent;
  59. }
  60. }

程序截图:

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

view plain copy to clipboard print ?
  1. /**
  2. *文件存储数据方式工具类
  3. *
  4. *@authorzuolongsnail
  5. */
  6. publicclassFilesUtil{
  7. /**
  8. *保存文件内容
  9. *
  10. *@paramc
  11. *@paramfileName
  12. *文件名称
  13. *@paramcontent
  14. *内容
  15. */
  16. privatevoidwriteFiles(Contextc,StringfileName,Stringcontent,intmode)
  17. throwsException{
  18. //打开文件获取输出流,文件不存在则自动创建
  19. FileOutputStreamfos=c.openFileOutput(fileName,mode);
  20. fos.write(content.getBytes());
  21. fos.close();
  22. }
  23. /**
  24. *读取文件内容
  25. *
  26. *@paramc
  27. *@paramfileName
  28. *文件名称
  29. *@return返回文件内容
  30. */
  31. privateStringreadFiles(Contextc,StringfileName)throwsException{
  32. ByteArrayOutputStreambaos=newByteArrayOutputStream();
  33. FileInputStreamfis=c.openFileInput(fileName);
  34. byte[]buffer=newbyte[1024];
  35. intlen=0;
  36. while((len=fis.read(buffer))!=-1){
  37. baos.write(buffer,0,len);
  38. }
  39. Stringcontent=baos.toString();
  40. fis.close();
  41. baos.close();
  42. returncontent;
  43. }
  44. }

更多相关文章

  1. android 自定义权限 permission
  2. Android(安卓)Studio 引入编写好的.so库
  3. 给 Android(安卓)开发者的 Flutter 指南(上)
  4. 基于 Android(安卓)NDK 的学习之旅-----Android.mk 介绍
  5. android 菜单导航 (Fragment + RadioGroup)
  6. Android(安卓)10适配注意的问题
  7. android 判断Apk是否签名和 签名是否一致
  8. 使用Android(安卓)Studio开发NDK程序时出现couldn't find "lib×
  9. Android如何通过shareduserid获取系统权限

随机推荐

  1. .Net中Core使用Socket与树莓派进行通信的
  2. C#中String类型与json之间相互转换的实现
  3. C#中VB.NET给Word文档添加/撤销书签的实
  4. C#编写SqlHelper类的使用详解
  5. 介绍有关C++中继承与多态的基础虚函数类
  6. C# WinForm跨线程访问控件的图文详解
  7. C#中Socket框架的使用教程
  8. C#中关于async与await的使用详解
  9. C#中关于表达式树的简单介绍
  10. Rest在asp.net MVC下使用的方法介绍