本文实例讲述了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小时内与您取得联系。