Android中 File存储

Context 提供了两个方法来打开本地应用程序的数据文件夹里的文件I/O流.

  1. FileInputStream openFileInput (String name): 打开应用程序中的数据文件夹下的name文件对应的输入流.
  2. FileOutputStream openFileOutput (String name, int mode) : 打开应用程序中的数据文件夹下的name文件对应的输出流.

上面两个方法分别用于打开文件的输入流和输出流, 其中第二个方法的第二个参数指定打开文件的模式,该模式支持如下几种方式.:

  1. MODE_APPEND:如果文件已经存在,那么将数据写入到现有文件的末尾,而不是覆盖它.
  2. MODE_PRIVATE :该文件只能被当前程序读写.
  3. MODE_WORLD_READABLE: 该文件的内容可以被其他程序读取.
  4. MODE_WORLD_WRITEABLE: 该文件的内容可以被其他程序读, 写.

另外 ,Context还提供了如下几个方法来访问应用程序的数据文件夹:

  1. getDir(String name, int mode) : 在应用程序的数据文件夹下,获取或创建name对应的子目录.
  2. File getFilesDir(): 获取该应用程序的数据文件夹的绝对路径.
  3. String[] fileList() :返回该应用程序的数据文件夹下的全部文件.
  4. deleteFile(String name) :删除该应用程序的数据文件夹下的指定的文件.

package com.test.filetest;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;

/**
 * 示范如何读写应用程序数据文件夹内的文件
 */
public class MainActivity extends AppCompatActivity {

    Button btnWrite, btnRead;
    EditText etWrite;
            TextView etRead;

    public static final String FILE_NAME = "a.txt";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnWrite = (Button) findViewById(R.id.btn_write);
        btnRead = (Button) findViewById(R.id.btn_read);

        etRead = (TextView) findViewById(R.id.et_read);
        etWrite = (EditText) findViewById(R.id.et_write);


        btnWrite.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //将edit1中的内容写入文件中
                write(etWrite.getText().toString());
                etWrite.setText(""); //将第一个输入框设置为空
            }
        });

        btnRead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                etRead.setText(read2());
            }
        });
    }

    private String read2() {

        //打开文件输入流
        try {
            FileInputStream fis = openFileInput(FILE_NAME);

            byte[] bytes = new byte[1024];
            int hasRead = 0;

            StringBuilder sb = new StringBuilder("");

            //读取文件内容
            while ((hasRead = fis.read(bytes)) > 0) {
                sb.append(new String(bytes,0,hasRead));
            }

            fis.close();

            return sb.toString();


        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    //写入内容的方法
    private void write(String input) {
        //以追加的模式打开文件输出流
        try {
            FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
            //将文件FileOutputStream包装成 PrintStream
            PrintStream ps = new PrintStream(fos);

            //输出文件内容
            ps.println(input);

            ps.close(); //关闭文件输出流

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

布局界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.test.filetest.MainActivity">

    <Button
        android:id="@+id/btn_write"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="写入内容"/>

    <EditText
        android:id="@+id/et_write"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/btn_write"
        android:hint="请输入内容"/>

    <Button
        android:id="@+id/btn_read"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/btn_write"
        android:text="读取内容"/>

    <TextView
        android:id="@+id/et_read"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ff9"
        android:layout_below="@id/et_write"
        android:layout_toEndOf="@id/btn_read"
        android:layout_toRightOf="@id/btn_write"
        android:hint="显示输入内容"/>
</RelativeLayout>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值