android小功能实现之文件读写

新建一个Android工程。

一 布局

先看效果图:

打开main.xml修改内容如下:

<?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: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/filename" />

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

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

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

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

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

二 定义字符串

打开strings.xml添加内容如下:

<resources>
    <string name="app_name">File</string>
    <string name="action_settings">Settings</string>

    <string name="filename">文件名称</string>
    <string name="file_content">文件内容</string>
    <string name="button_save">保存</string>
    <string name="save_success">保存成功</string>
    <string name="save_fail">保存失败</string>

    <string name="button_read">读取</string>
    <string name="read_success">读取成功</string>
    <string name="read_fail">读取失败</string>
</resources>

三 功能实现

新建一个类FileService,用于文件的读写,完整代码如下:

public class FileService {
    public Context context;

       public  FileService(Context context){
           this.context = context;
       }

    /**
     * 保存字符串到文件
     * @param name 文件名
     * @param content 文件内容
     */
    public void save(String name, String content) throws Exception{
        // MODE_PRIVATE 创建出来的文件,仅能被本应用访问,而且新写入的内容会覆盖原来的内容
         FileOutputStream os = context.openFileOutput(name, Context.MODE_PRIVATE);
        // 默认保存在/data/data/<package_name>/files目录
        os.write(content.getBytes());
        os.close();
    }

    /***
     * 读取文件内容
     * @param name 文件名
     * @return
     * @throws Exception
     */
    public String read(String name) throws  Exception{
        FileInputStream is = context.openFileInput(name);
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        byte[] buf = new byte[1024];
        int len = 0;
        while( (len = is.read(buf)) != -1){
            os.write(buf,0, len);
        }
        byte[] data = os.toByteArray();
        String content = new String(data);
        return  content;
    }
}

四 测试代码

修改MainActivity.java代码如下:

    public EditText nameText;
    public EditText saveContentText;
    public EditText readContentText;
    public Button button_read;
    public String filename;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        nameText = (EditText)this.findViewById(R.id.filename);
        saveContentText = (EditText)this.findViewById(R.id.save_file_content);
        readContentText = (EditText)this.findViewById(R.id.read_file_content);

        Button button_save = (Button) this.findViewById(R.id.button_save);
        button_save.setOnClickListener(new ButtonSaveClickListener());

        button_read = (Button) this.findViewById(R.id.button_read);
        button_read.setClickable(false);
        button_read.setOnClickListener(new ButtonReadClickListener());
    }

    private final class ButtonSaveClickListener implements View.OnClickListener{
        public void onClick(View v){
            String name = nameText.getText().toString();
            String content = saveContentText.getText().toString();
            FileService service = new FileService(getApplicationContext());
            try {
                filename = name;
                service.save(name, content);
                filename = name;
                button_read.setClickable(true);
                Toast.makeText(getApplicationContext(),R.string.save_success, Toast.LENGTH_LONG).show();
            }catch (Exception e){
                Toast.makeText(getApplicationContext(),R.string.save_fail, Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }
        }
    }

    private final class ButtonReadClickListener implements View.OnClickListener{
        public void onClick(View v){
            FileService service = new FileService(getApplicationContext());
            try {
                String content = service.read(filename);
                readContentText.setText(content);
                Toast.makeText(getApplicationContext(),R.string.read_success, Toast.LENGTH_LONG).show();
            }catch (Exception e){
                Toast.makeText(getApplicationContext(),R.string.read_fail, Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }
        }
    }

运行结果如图:

时间: 2024-11-10 09:43:14

android小功能实现之文件读写的相关文章

android小功能实现之xml文件解析(Pull)

android解析XML常见的有三种Pull.SAX.Dom三种方式. 最常使用是Pull,Android工程本身解析XML也是用的Pull. Pull是一个开源项目,其官方网站是:http://xmlpull.org/. 在Android工程中已经集成了Pull项目,可以直接使用. 新建一个Android工程. 一 添加测试文件 在res目录下新建一个raw文件夹,在其中添加文件persons.xml, 内容如下: <?xml version="1.0" encoding=&q

Android SD卡简单的文件读写操作

首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: <!-- SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 向SDCard写入数据权限 --> <uses-permission android:name="

android小功能实现之简单数据持久化保存(SharedPreferences)

为了保存一些简单的配置,类似iOS的NSUserDefault和cocos2dx的CCUserDefault,Android提供了SharedPreferences. 一 布局 先看效果图: 打开main.xml修改内容如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr

每天学习一个小功能:java文件上传

====(1.)第一种.利用普通缓冲流进行文件上传 ① 前端 注意: 1.指定表单类型为文件上传表单 :enctype="multipart/form-data"  2.提交方式必须为:post3.表单中,存在文件域 的表单元素 <form name="frm_test" action="${pageContext.request.contextPath }/shangchuan" method="post" encty

android小功能实现之SQLite数据库的基本操作

 创建一个Android工程 一 新建数据库 1 新建一个类DBOpenHelper 内容如下: import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelpe

android小功能实现之拨打电话

新建一个Android工程. 一 布局 打开main.xml修改内容如下: <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/mobile" /> <EditText android:layout_width="fill_parent" android:

Android小功能实现-sim卡读取,发短信,播放音乐

1.读取sim卡信息 private TelephonyManager tm; tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String sim = tm.getSimSerialNumber(); 需要TelephonyManager 加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 2.发短信 S

Android 7.0 之后相机/文件读写等权限获取方式改变,导致开启相机闪退

在 Android 7.0 之前 Google 提供的动态申请权限的 API,可以调用相机拍照,访问SDcard等操作都只需要申请对应的权限,如下: <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 但是 7.0 更新之

Android - 小功能 - 利用最新版ShareSDK进行手动分享(自定义分享界面)

之前有用过Share SDK进行快捷分享,可是官方demo中的快捷分享的界面已经设置死了,而公司的产品又设计了自己的分享界面,这就需要我进行手动分享了. 看了一堆官方的文档,终于写出来了,好了,不废话,进入主题. 之前没有用过ShareSDK分享过的朋友建议先看看官方的文档,不要火急火急的就像照搬官方的demo, 此为文档地址:: http://wiki.sharesdk.cn/Android_快速集成指南 此为官方demo下载地址:http://sharesdk.cn/Download 此为我