//开发一个app使其可以保存txt文件
实现应用界面
Strings
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">文件操作</string>
<string name="tip1">File name</string>
<string name="tip2">File</string>
<string name="button">Save</string>
<string name="success">Success!</string>
<string name="fail">Fail</string>
</resources>
<?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/tip1" />
<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/tip2" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/filecontent"
android:minLines="3"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button"
android:id="@+id/Button"
/>
</LinearLayout>FileActivity中设置按钮点击事件。
点击时,找到两个文本输入框,得到文件名称和文件内容。
实现文件的保存的方法save,应属于service类(业务类)
创建该类FileService,放在service包内
保存完成后需要用Toast提示用户保存完成
此时,FileActivity代码基本完成
Java中I/O技术
通过contex.openFileOutput(文件名称,操作模式)快速得到一个输出流对象
*文件的操作模式
私有操作模式MODE_PRIVATE
文件只能被本应用访问,再次写入时候是覆盖原文件内容
其它应用无法读取和写入数据
追加操作模式MODE_APPEND
文件只能被本应用访问。再次写入是以追加方式写入文件内容
MODE_WORLD_READABLE
创建的文件可以被其它应用读取。但不能被其它应用写入。
MODE_WORLD_WRITEABLE
创建的文件可以被其它应用写入。但不能被其它应用读取。
所以可以用 MODE_WORLD_READABLE+READABLE_WORLD_WRITEABLE
把传入save的字符串转换为二进制写入,用write()方法
如果调用默认方法,默认使用utf-8编码
然后关掉流
对save方法设置例外抛出
在MianActivity中捕获例外
如果成功,提示用户保存成功
如果捕获例外,提示用户保存失败
代码:
FileActivity
package cn.itcast.files;
import cn.itcast.service.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class FileActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)this.findViewById(R.id.Button);
button.setOnClickListener(new ButtonClickListener());
}
private class ButtonClickListener implements View.OnClickListener
{
public void onClick(View v) {
EditText filenameText = (EditText)findViewById(R.id.filename);
EditText filecontentText = (EditText)findViewById(R.id.filecontent);
String filename = filenameText.getText().toString();
String filecontent = filecontentText.getText().toString();
FileService service = new FileService(getApplicationContext());
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();
}
}
}
}FileService
package cn.itcast.service;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import android.content.Context;
public class FileService {
/*
*
*/
private Context context ;
public FileService(Context context) {
this.context = context;
}
public void save(String filename, String filecontent) throws Exception {
FileOutputStream outStream = context.openFileOutput(filename, context.MODE_PRIVATE);
outStream.write(filecontent.getBytes());
outStream.close();
}
}
系统默认将文件保存在data/data/包名/files
文件的访问与修改权限由文件操作模式决定
这篇博客介绍了如何在Android应用中实现保存txt文件的功能。开发者需要创建一个界面,获取用户输入的文件名和内容,然后通过FileService类利用Java的I/O技术将数据保存到文件。文件的保存模式可以选择私有、追加或公开读写,并在保存完成后通过Toast通知用户操作结果。代码示例包括FileActivity和FileService的实现。

119

被折叠的 条评论
为什么被折叠?



