Android 文件操作详解

Android 的文件操作说白了就是Java的文件操作的处理。所以如果对Java的io文件操作比较熟悉的话,android的文件操作就是小菜一碟了。好了,话不多说,开始今天的正题吧。

先从一个小项目入门吧

首先是一个布局文件,这一点比较的简单,那就直接上代码吧。

          

然后是我们的主界面的Java文件了。继续上代码

package com.mark.storage;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.mark.service.FileService;public class MainActivity extends Activity {  private EditText mEt_filename,mEt_filecontent;  private Button mBtn_save;  private void init(){    mEt_filecontent = (EditText) findViewById(R.id.et_filecontent);    mEt_filename = (EditText) findViewById(R.id.et_filename);    mBtn_save = (Button) findViewById(R.id.btn_save);  }  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    init();  }  /**   * 保存数据到一个文件中   * @param view   */  public void toSave(View view) {    String fileName = mEt_filename.getText().toString();    String fileContent = mEt_filecontent.getText().toString();    FileService service = new FileService(getApplicationContext());    boolean isSucceed = service.save(fileName, fileContent);    if(isSucceed){      Toast.makeText(getApplicationContext(), "恭喜您保存文件成功!", Toast.LENGTH_SHORT).show();    }else{      Toast.makeText(getApplicationContext(), "对不起,您保存文件失败!", Toast.LENGTH_SHORT).show();    }  }  public void getFile(View view){    String fileName = mEt_filename.getText().toString();    FileService service = new FileService(getApplicationContext());    String fileContent = service.getFile(fileName);    if(fileContent!=null || !fileContent.equals("")) {      mEt_filecontent.setText(fileContent);    }else{      Toast.makeText(getApplicationContext(), "对不起,读取文件失败!", Toast.LENGTH_SHORT).show();    }  }}

是不是感觉里面的代码有点奇怪呢?FileService是什么鬼?

其实FileService就是我们的业务类,主要的功能就是帮助我们实现了对文件的保存和读取等操作。下面也贴出代码

package com.mark.service;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import android.content.Context;public class FileService {  //android自带的可以快速获得文件输出流的一个类,注意参数不能是路径,只能是文件名称  private Context mContext;  public FileService(Context context) {    this.mContext = context;  }  /**   * 保存文件的一个方法   * @param fileName   * @param fileContent   * @return   */  public boolean save(String fileName, String fileContent) {    try {      //采用Context.MODE_PRIVATE模式的话,只允许本应用访问此文件,并且熟覆盖式的添加数据      FileOutputStream fos = mContext.openFileOutput(fileName, Context.MODE_PRIVATE);      fos.write(fileContent.getBytes());      fos.close();      return true;    } catch (Exception e) {      e.printStackTrace();      return false;    }  }  /**   * 获得之前保存过的文件的详细的信息   * @param fileName   * @return   */  public String getFile(String fileName) {    String fileContent = "";    try{      FileInputStream fis = mContext.openFileInput(fileName);      byte[] buf = new byte[1024];      int len;      ByteArrayOutputStream bais = new ByteArrayOutputStream();      while((len = fis.read(buf))!= -1){        bais.write(buf, 0, len);      }      byte[] data = bais.toByteArray();      fileContent = new String(data);      fis.close();      return fileContent;    }catch(Exception e){      e.printStackTrace();      return "对不起,读取文件失败!";    }  }}

业务类的分析

现在开始进入正题咯。这个小项目的核心就在于这个业务类,原因如下:

  1. Context:Android自带的上下文类,方便获得file流对象
  2. 读文件方法中使用到了ByteArrayOutputStream类,这一点是很重要的,如果只是单纯的使用字符串来读取存储的文件的话,就会因为序列化的问题而出现不了目标数据。
  3. 使用了返回值来对操作的结果进行了“反馈”,方便为用户提供友好的界面和使用体验。

核心

分层的思想,不同的功能的类放置到不同的包内,这样既方便程序的调试,也方便今后的代码的维护。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多相关文章

  1. Android(安卓)环信官方Demo3.3.2详细配置方法
  2. Android中如何使用JUnit进行单元测试
  3. Android中Debuggable设置问题
  4. Android(安卓)多渠道打包
  5. Android使用自定义字体的方法
  6. 在Android上实现HttpServer的示例代码
  7. Android的反编译和代码混淆
  8. android boot.img 拆包,修改adb 具有root权限,以i9250为例
  9. NPM 和webpack 的基础使用

随机推荐

  1. 使用Pixelmator Pro调整照片,让画面变得清
  2. OSD 自动升级Dell BIOS 版本
  3. 记录shell脚本中的特殊变量
  4. Linux运维入门教程03-01 (目录文件的浏览
  5. 利用office办公软件实现一对一群发邮件功
  6. Java怎么配置环境变量?
  7. shell脚本之if使用语句进行条件测试
  8. 前端技巧:如何使用nodejs实现举牌人表情包
  9. shell scripts之算数运算详解
  10. 第十六周作业