android file构造方法,Android开发之文件操作详解

本文详细介绍了Android应用程序中进行文件操作的步骤,包括界面设计、业务层实现、单元测试以及控制器层的设置。文章以一个简单的文件保存和读取示例展示了如何在手机内置存储器中进行文件操作,涵盖了异常处理、文件读写方法和UI交互。并通过单元测试验证了代码的正确性,最后在Android模拟器上展示了实际效果。
摘要由CSDN通过智能技术生成

本文实例讲述了Android开发之文件操作。分享给大家供大家参考,具体如下:

目前,几乎所有的设备都会涉及到文件的操作,例如什么电脑,手机等设备。Android的文件操作和电脑是比较类似的,既可以存储在手机内置的存储器里也可以是sd卡。在这篇文章里主要介绍在手机内置存储器里的文件操作。

一. 开发流程

(1)界面的设计

(2)设计android的业务层

(3)单元测试

(4)设置android的控制器层

二. 开发步骤

(1)设计软件界面

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/filename"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/filename"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/content"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/content"

android:minLines="3"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/button"

android:id="@+id/button"/>

这里也把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());

}

}

}

看一下运行之后的效果

ac238c9344f371c21e08e10db76d00d0.png

473106cfd0a221fec51c254e5a87258e.png

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

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

}

}

});

}

}

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

1455e653dd0e7b98dd875f68c5865e10.png

下面把strings.xml的代码也贴出来

Hello World, FileActivity!

文件的读取

输入文件名称

输入文件内容

保存

文件保存成功

文件保存失败

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值