目前,机会搜有的设备都会涉及到文件的操作,例如什么电脑,手机等设备。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 文件 操作 例子 源码 android 文件 操作 例子 源码 android 文件 操作 例子 源码
这是一个android文件操作的实例,包括文件的读写与删除
文件操作工具类,包含生成保存,复制,删除,读取,获取文件名,获取文件列表等等,只有你想不到,没有你找不到的Android端工具类,复制到项目中可直接使用
android文件架构详解 cache : 是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处。 红色标记的两个文件是debug模式下产生的 data : 存放用户安装的软件以及各种数据。 default.prop : 默认配置文件 ...
Android文件操作列表显示进入退出删除复制粘贴新建文件等等.rar
android文件操作封装的java类,包括根据关键字查找文件,遍历目录,删除目录所有文件等等
android 文件操作 输入流对象 输出流对象 SDCard读写
Android应用源码之Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等.zip
安卓Android源码——安卓Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等.rar
安卓Android源码——安卓Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等.zip
Android高级应用源码-Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等.zip
Android应用源码之Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等项目安卓应用源码下载.ziAndroid应用源码之Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等项目安卓应用源码...
ANDROID文件操作,各种文件的读写方法,使用随机访问类和字节流的方法
Android文件操作这是下半部分 是跟上半部分结合的 这是上课做的doc 比较精细全面 有相应代码
本篇文章小编为大家介绍,Android 文件操作方法。需要的朋友参考下
Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等.zip项目安卓应用源码下载Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等.zip项目安卓应用源码下载 1.适合学生毕业设计研究...
安卓开发-Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等