您的位置:首页 > 其它

实例教程三:文件的保存与读取

2013-07-17 14:44 573 查看
使用代码嵌入android.os.SystemProperties的方法(转)
http://www.eoeandroid.com/thread-206961-1-1.html

Android网络连接处理方法
http://www.eoeandroid.com/thread-206925-1-1.html

IReader书架效果的实现想法,唯一的问题是对美工的技能要...
http://www.eoeandroid.com/thread-206909-1-1.html

布局文件:  

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<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/edtFileName"/>

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/fileContent" />

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/edtFileContent"
android:minLines="3"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnSave"
android:text="@string/fileSave"/>

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">文件操作</string>
<string name="fileName">文件名称</string>
<string name="fileContent">文件内容</string>
<string name="fileSave">保存</string>
<string name="success">保存完成</string>
<string name="fail">保存失败</string>

</resources>


package cn.itcast.files;

import cn.itcast.service.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

private EditText edtFileName;
private EditText edtFileContent;
private Button btnSave;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
}

private void initView(){

edtFileName = (EditText)this.findViewById(R.id.edtFileName);
edtFileContent = (EditText)this.findViewById(R.id.edtFileContent);
btnSave = (Button)this.findViewById(R.id.btnSave);
btnSave.setOnClickListener(this);

}
@Override

public void onClick(View v) {

switch(v.getId()){

case R.id.btnSave:

String fileName = edtFileName.getText().toString();
String fileContent = edtFileContent.getText().toString();

FileService service = new FileService(this);
try {

service.save(fileName, fileContent);
Toast.makeText(getApplicationContext(), R.string.success, 1).show();

} catch (Exception e) {
Toast.makeText(getApplicationContext(), R.string.fail, 1).show();
e.printStackTrace();
}

break;
default:
break;
}
}
}


package cn.itcast.service;

import java.io.ByteArrayOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import android.content.Context;

public class FileService {

private Context context;

public FileService(Context context){

this.context = context;

}

/**

* 保存文件

* @param fileName 文件名称

* @param fileContent 文件内容

*/

public void save(String fileName, String fileContent) throws Exception{

//IO j2se

//Context.MODE_PRIVATE --私有操作模式:创建出来的文件只能被本应用访问,其它应用无法访问该文件

//另外采用私有操作模式创建的文件,写入文件中的内容会覆盖原文件内容

//如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND

FileOutputStream outStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);

outStream.write(fileContent.getBytes());

outStream.close();

}

/**

* 读取文件内容

* @param fileName 文件名称

* @return 文件内容

* @throws Exception

*/

public String read(String fileName) throws Exception{

FileInputStream inStream = context.openFileInput(fileName);

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

//防止数据量过大,超过了1024

int len = 0;

while((len = inStream.read(buffer)) != -1){

//防止每次读取覆盖前一次数据

outStream.write(buffer, 0, len);

}

byte[] data = outStream.toByteArray();

return new String(data);

}

//Context.MODE_APPEND --模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件

//Context.MODE_WORLD_READABLE和Context.Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件

//MODE_WORLD_READABLE: 表示当前文件可以被其它应用读取

//MODE_WORLD_WRITEABLE: 表示当前文件可以被其它应用写入

//如果希望文件被其他应用读和写,可以传入:

//openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE +
//                        Context.Context.MODE_WORLD_WRITEABLE);

//android有一套自己的安全模式,当应用程序(.apk)在安装时系统就会分配给他一个userId

//当该应用要去访问其它资源比如文件的时候,就需要userId匹配,默认情况下,任何应用创建的文件,

//sharePerferences,数据库都应该是私有的(位于/data/data/<package name>/files),

//其它程序无法访问,除非在创建时指定了Context.MODE_WORLD_READABLE或者

//Context.Context.MODE_WORLD_WRITEABLE,只有这样其它程序才能正确访问

}


单元测试:

package cn.itcast.test;

import cn.itcast.service.FileService;

import android.test.AndroidTestCase;

import android.util.Log;

public class FileServiceTest extends AndroidTestCase{

private static final String TAG = "FileServiceTest";

public void testRead() throws Throwable{

FileService service = new FileService(this.getContext());

String result = service.read("itcast.txt");

Log.i(TAG, result);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: