欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发之文件操作详解

程序员文章站 2022-05-02 21:05:18
本文实例讲述了android开发之文件操作。分享给大家供大家参考,具体如下: 目前,几乎所有的设备都会涉及到文件的操作,例如什么电脑,手机等设备。android的文件操作...

本文实例讲述了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文件操作技巧汇总》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android布局layout技巧总结》、《android开发入门与进阶教程》、《android资源操作技巧汇总》及《android控件用法总结

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