iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 文件操作详解及简单实例
  • 163
分享到

Android 文件操作详解及简单实例

Android 2022-06-06 04:06:32 163人浏览 八月长安
摘要

 Android 文件操作详解 Android 的文件操作说白了就是Java的文件操作的处理。所以如果对Java的io文件操作比较熟悉的话,android的文件操作就

 Android 文件操作详解

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

先从一个小项目入门

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


<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="文件名称" />
  <EditText 
    android:id="@+id/et_filename"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="file name"
    />
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="文件内容" />
  <EditText 
    android:id="@+id/et_filecontent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:lines="7"
    android:hint="file content"
    />
  <Button 
    android:id="@+id/btn_save"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="toSave"
    android:text="Save"
    />
  <Button 
    android:id="@+id/btn_get"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="getFile"
    android:text="Get"
    />
</LinearLayout>

然后是我们的主界面的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();
  }
  
  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;
  }
  
  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;
    }
  }
  
  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 "对不起,读取文件失败!";
    }
  }
}

业务类的分析

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

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

核心

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

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

您可能感兴趣的文章:android文件操作——读取assets和raw文件下的内容Android SD卡上文件操作及记录日志操作实例分析Android中扫描多媒体文件操作详解Android对sdcard扩展卡文件操作实例详解Android 文件操作方法Android开发之文件操作模式深入理解Android中文件读写(输入流和输出流)操作小结Android操作存放在assets文件夹下sqlite数据库的方法Android中使用pull解析器操作xml文件的解决办法Android编程之在SD卡上进行文件读写操作实例详解Android编程之文件读写操作与技巧总结【经典收藏】Android开发之文件操作详解


--结束END--

本文标题: Android 文件操作详解及简单实例

本文链接: https://www.lsjlt.com/news/22278.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作