Android 开发 保存文件app

这篇博客介绍了如何在Android应用中实现保存txt文件的功能。开发者需要创建一个界面,获取用户输入的文件名和内容,然后通过FileService类利用Java的I/O技术将数据保存到文件。文件的保存模式可以选择私有、追加或公开读写,并在保存完成后通过Toast通知用户操作结果。代码示例包括FileActivity和FileService的实现。

//开发一个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>


main

<?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

文件的访问与修改权限由文件操作模式决定

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值