Android开发之文件操作详解

作者:青蛙小王子 时间:2023-02-06 01:23:30 

本文实例讲述了Android开发之文件操作。分享给大家供大家参考,具体如下:

目前,几乎所有的设备都会涉及到文件的操作,例如什么电脑,手机等设备。Android的文件操作和电脑是比较类似的,既可以存储在手机内置的存储器里也可以是sd卡。在这篇文章里主要介绍在手机内置存储器里的文件操作。

一. 开发流程

(1)界面的设计
(2)设计android的业务层
(3)单元测试
(4)设置android的控制器层

二. 开发步骤

(1)设计软件界面


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="@string/filename"
 />
<EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/filename"
 />
 <TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="@string/content"
 />
<EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/content"
 android:minLines="3"
 />
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/button"
  android:id="@+id/button"/>
</LinearLayout>

这里也把R文件给大家看看


/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package org.lxh.file;
public final class R {
 public static final class attr {
 }
 public static final class drawable {
   public static final int icon=0x7f020000;
 }
 public static final class id {
   public static final int button=0x7f050002;
   public static final int content=0x7f050001;
   public static final int filename=0x7f050000;
 }
 public static final class layout {
   public static final int main=0x7f030000;
 }
 public static final class string {
   public static final int app_name=0x7f040001;
   public static final int button=0x7f040004;
   public static final int content=0x7f040003;
   public static final int failure=0x7f040006;
   public static final int filename=0x7f040002;
   public static final int hello=0x7f040000;
   public static final int success=0x7f040005;
 }
}

(2)设计业务层


package org.lxh.service;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import android.content.Context;
import android.util.Log;
public class FileService {
 private Context context;
 public FileService(Context context) { //通过构造方法传入context
   this.context = context;
 }
 //保存文件
 public void saveFile(String filename,String content) throws Exception{ //异常交给调用处处理
   FileOutputStream out=context.openFileOutput(filename, Context.MODE_PRIVATE);
   out.write(content.getBytes());
   out.close();
 }
 public String readFile(String filename) throws Exception{ //异常交给调用处处理
   FileInputStream in=context.openFileInput(filename);
   byte b[]=new byte[1024];
   int len=0;
   ByteArrayOutputStream array=new ByteArrayOutputStream();
   while((len=in.read(b))!=-1){ //开始读取文件
     array.write(b,0,len);
   }
   byte data[]=array.toByteArray(); //把内存里的数据读取出来
   in.close(); //每个流都必须关闭
   array.close();
   return new String(data); //把byte数组转换为字符串并返回
 }
}

下面开始做单元测试,要添加的环境就不说了


package org.lxh.test;
import org.lxh.service.FileService;
import android.test.AndroidTestCase;
import android.util.Log;
public class Test extends AndroidTestCase {
 public static final String TAG = "Test";
 public void testSave() {
   FileService service = new FileService(this.getContext());
   try {
     service.saveFile("01.txt", "hello");
   } catch (Exception e) {
     Log.i(TAG, e.getMessage());
   }
 }
 public void testRead() {
   FileService service = new FileService(this.getContext());
   try {
     Log.i(TAG,service.readFile("01.txt"));
   } catch (Exception e) {
     Log.e(TAG, e.getMessage());
   }
 }
}

看一下运行之后的效果

Android开发之文件操作详解

Android开发之文件操作详解

单元测试通过了,下面来看下在模拟器上的效果,在这之前要先看下下面的代码


package org.lxh.file;
import org.lxh.service.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class FileActivity extends Activity {
 private FileService service;
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   service=new FileService(this);
   Button button=(Button)findViewById(R.id.button);
   button.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
       EditText filename=(EditText)findViewById(R.id.filename);
       EditText content=(EditText)findViewById(R.id.content);
       try {
         service.saveFile(filename.getText().toString(), content.getText().toString());
         Toast.makeText(FileActivity.this, R.string.success, 1).show();
       } catch (Exception e) {
         Toast.makeText(FileActivity.this, R.string.failure, 1).show();
         Log.e("FileActivity", e.getMessage());
       }
     }
   });
 }
}

如果保存成功就给用户一个图示通知:

Android开发之文件操作详解

下面把strings.xml的代码也贴出来


<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string name="hello">Hello World, FileActivity!</string>
 <string name="app_name">文件的读取</string>
 <string name="filename">输入文件名称</string>
 <string name="content">输入文件内容</string>
 <string name="button">保存</string>
 <string name="success">文件保存成功</string>
 <string name="failure">文件保存失败</string>
</resources>

希望本文所述对大家Android程序设计有所帮助。

标签:Android,文件操作
0
投稿

猜你喜欢

  • 使用Maven配置Spring的方法步骤

    2023-02-05 18:37:46
  • Android开发中自定义 editText下划线

    2023-03-30 13:40:35
  • C# Winform下载文件并显示进度条的实现代码

    2022-11-26 04:39:02
  • 一文精通Java 多线程之全方位解读

    2022-10-23 19:15:51
  • Android开发实现的ViewPager引导页功能(动态加载指示器)详解

    2021-10-16 17:40:35
  • 实现activity管理器一次退出所有activity

    2022-11-20 10:15:23
  • 对Jpa中Entity关系映射中mappedBy的全面理解

    2023-07-25 03:48:39
  • Android自定义view实现圆形与半圆形菜单

    2023-10-18 19:08:53
  • springboot 动态数据源的实现方法(Mybatis+Druid)

    2021-07-26 04:27:00
  • 点九图片的显示内容区域应作何理解

    2022-12-27 12:24:30
  • Android 自定义view和属性动画实现充电进度条效果

    2023-08-24 00:18:37
  • SpringMVC统一异常处理实例代码

    2021-05-31 02:29:26
  • Android Studio发布项目到Jcenter仓库步骤(图文)

    2022-12-21 13:50:54
  • android实现在横竖屏切换时页面信息不被重置的示例分享

    2021-06-20 08:45:46
  • Springboot 使用内置tomcat禁止不安全HTTP的方法

    2022-07-12 10:45:45
  • Android发送xml数据给服务器的方法

    2021-12-19 13:06:44
  • unity3D实现摄像机抖动特效

    2022-09-20 12:10:42
  • Java-JFrame-swing嵌套浏览器的具体步骤

    2022-11-26 19:30:10
  • redisson特性及优雅实现示例

    2022-02-13 19:51:25
  • C#实现获取不同对象中名称相同属性的方法

    2021-11-04 19:26:32
  • asp之家 软件编程 m.aspxhome.com