Android之文件操作和JUnit

本文介绍了如何在Android应用中实现文件保存与读取功能,采用MVC设计模式,详细阐述了视图层、服务层的开发过程,并通过JUnit进行测试,最终实现了控制层的整合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1>写一个文件保存和读取的应用程序。和javaEE一样MVC的设计模式,在android里M应该是Service层,那么Service层和view层应该可以并行开发。因为程序比较简单,我就先写view了。

<?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:id="@+id/fileNameLabel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/fileNameLabel" /> <EditText android:id="@+id/fileNameEdit" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/fileTxtLabel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/fileTxtLabel" /> <EditText android:id="@+id/fileTxtEdit" android:layout_width="fill_parent" android:minLines="3" android:layout_height="wrap_content" /> <Button android:id="@+id/fileSaveBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/fileSaveBtn" /> </LinearLayout>


2>然后是Service层。

package com.duantl.service; import java.io.FileOutputStream; import android.content.Context; public class FileService { private Context context; public FileService(Context context) { this.context = context; } /** * 以私有模式输出文件内容 * @param fileName * @param content * @throws Exception */ public void save(String fileName, String content) throws Exception { FileOutputStream outStream = context.openFileOutput(fileName, Context.MODE_PRIVATE); outStream.write(content.getBytes()); outStream.close(); } }


3>再写控制层之前,先用JUnit进行测试。

package com.duantl.file; import android.test.AndroidTestCase; import com.duantl.service.FileService; public class FileServiceTest extends AndroidTestCase { public void saveTest() throws Exception { FileService fileService = new FileService(this.getContext()); fileService.save("www.txt", "wangguan"); } }


当然别忘记了改AndroidManifest.xml,添加JUnit配置

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.duantl" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="android.test.runner" /> <activity android:name="file.MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.duantl" android:label="Tests for My App" /> </manifest>

4>测试成功,那么好,就开始控制层。

package com.duantl.file; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.duantl.service.FileService; public class MainActivity extends Activity { /** Called when the activity is first created. */ private EditText fileNameEdit = null; private EditText fileTxtEdit = null; private Button fileSaveBtn = null; private FileService fileService; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); fileNameEdit = (EditText)this.findViewById(R.id.fileNameEdit); fileTxtEdit = (EditText)this.findViewById(R.id.fileTxtEdit); fileSaveBtn = (Button)this.findViewById(R.id.fileSaveBtn); fileSaveBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub String fileNameStr = fileNameEdit.getText().toString(); String fileTxtStr = fileTxtEdit.getText().toString(); fileService = new FileService(MainActivity.this); try { fileService.save(fileNameStr, fileTxtStr); Toast.makeText(MainActivity.this, R.string.success, Toast.LENGTH_LONG).show(); } catch (Exception e) { // TODO Auto-generated catch block Toast.makeText(MainActivity.this, R.string.error, Toast.LENGTH_LONG).show(); e.printStackTrace(); } } }); } }


写功能就写好了,,那么看看读取的功能。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值