目前,机会搜有的设备都会涉及到文件的操作,例如什么电脑,手机等设备。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());
}www.2cto.com
}
});

}
}

更多相关文章

  1. Android使用Itext生成pdf文件
  2. android下创建文件夹和修改其权限的方法
  3. Google Android会成为手机领域的微软Windows吗?
  4. Android中调用手机自带输入法比如三星s5830i,仅限制输入浮点数,崩
  5. ZDC:2011年Android手机用户使用行为研究报告
  6. Android 将少量的数据文件保存在 data/data 目录下
  7. Android应用进入爆发期 手机游戏仍是市场重心
  8. Android编译系统中头文件搜索路径的顺序问题
  9. android:如果手机安装了app则打开一个activity,如果没有安装则去到

随机推荐

  1. 如果你想用对话框代替一个activity的话,可
  2. android EditText控件自动获取焦点弹出键
  3. Android(安卓)adb 常用技巧
  4. android——彻底关闭——应用程序
  5. 离线安装 Android(安卓)4.0 SDK
  6. Android游戏引擎选择
  7. Android总结篇系列:Android(安卓)权限
  8. 第七章 Android(安卓)动画机制与使用技巧
  9. Android开发中的logcat工具使用
  10. android关闭应用