Android 开发 保存文件app

来源:互联网 发布:手机淘宝改中差评 编辑:程序博客网 时间:2024/06/06 18:24

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

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

0 0
原创粉丝点击