全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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());
    }
  }
}

看一下运行之后的效果

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

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());
        }
      }
    });
  }
}

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

下面把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程序设计有所帮助。


# Android  # 文件操作  # Android 文件操作详解及简单实例  # android文件操作——读取assets和raw文件下的内容  # Android SD卡上文件操作及记录日志操作实例分析  # Android中扫描多媒体文件操作详解  # Android对sdcard扩展卡文件操作实例详解  # Android 文件操作方法  # Android开发之文件操作模式深入理解  # Android中文件读写(输入流和输出流)操作小结  # Android操作存放在assets文件夹下SQLite数据库的方法  # Android中使用pull解析器操作xml文件的解决办法  # Android编程之在SD卡上进行文件读写操作实例详解  # Android编程之文件读写操作与技巧总结【经典收藏】  # 在这  # 给大家  # 操作技巧  # 单元测试  # 进阶  # 相关内容  # 就不  # 说了  # 感兴趣  # 要先  # 看一下  # 涉及到  # 几乎所有  # 既可  # 更多关于  # 转换为  # 就给  # 里也  # 所述  # 贴出 


相关文章: 移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  学校为何禁止电信移动建设网站?  建站三合一如何选?哪家性价比更高?  网站微信制作软件,如何制作微信链接?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  c# 服务器GC和工作站GC的区别和设置  已有域名和空间,如何快速搭建网站?  图册素材网站设计制作软件,图册的导出方式有几种?  宝塔新建站点为何无法访问?如何排查?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  公司网站的制作公司,企业网站制作基本流程有哪些?  如何在Golang中使用replace替换模块_指定本地或远程路径  广州美橙建站如何快速搭建多端合一网站?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何在新浪SAE免费搭建个人博客?  动图在线制作网站有哪些,滑动动图图集怎么做?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  SQL查询语句优化的实用方法总结  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何高效利用200m空间完成建站?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  如何在IIS中配置站点IP、端口及主机头?  公司网站设计制作厂家,怎么创建自己的一个网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  建站之家VIP精选网站模板与SEO优化教程整合指南  魔方云NAT建站如何实现端口转发?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何快速配置高效服务器建站软件?  建站主机是什么?如何选择适合的建站主机?  建站org新手必看:2024最新搭建流程与模板选择技巧  用v-html解决Vue.js渲染中html标签不被解析的问题  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  导航网站建站方案与优化指南:一站式高效搭建技巧解析  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  宁波自助建站系统如何快速打造专业企业网站?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  如何在云主机快速搭建网站站点?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  香港服务器选型指南:免备案配置与高效建站方案解析  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  长沙企业网站制作哪家好,长沙水业集团官方网站?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  ,购物网站怎么盈利呢?  ,在苏州找工作,上哪个网站比较好?  威客平台建站流程解析:高效搭建教程与设计优化方案  如何通过FTP空间快速搭建安全高效网站?  如何在腾讯云服务器上快速搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。