Android中 File 存储(openFileOutput/openFileInput)

本文介绍了在Android中使用File进行本地数据存储的方法,特别是在使用openFileOutput和openFileInput时的mode模式。文章通过实例演示了如何读写文件,并展示了操作后的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

File 存储

在上一篇的博文中说到了SharedPreferences中提到了SharedPreferences局限性很大,只能存储Java基础数据,所以在某些时候它并不能满足我们的需求,有时候就需要用File存储了。


FileInputStream openFileInput(String name) 对应的是文件输入流
FileOutputStream openFileOutput(String name, int mode) 对应的是输出流

在输出流中的mode模式是说指定打开文件的模式,可以理解为你的数据权限,有以下几种:

MODE_PRIVATE :数据只能被本程序读和写
MODE_WORLD_READABLE :数据可以被其他程序读取,但是不能被写入
MODE_WORLD_WRITABLE :数据可以被其他程序读、写
MODE_APPEND :以追加的方式打开文件,可以向里面追加内容

ok,用一个小例子来说明一下:


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

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

public class MainActivity extends AppCompatActivity {
//  write
    private Button bt1;
//  read
    private Button bt2;
    private EditText text;
    private TextView view;

    final String FILE_NAME = "fileSave";
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bt1 = (Button) findViewById(R.id.button);
        bt2 = (Button) findViewById(R.id.button2);

        text = (EditText) findViewById(R.id.editText);
        view = (TextView) findViewById(R.id.textView);

        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                write(text.getText().toString());
                text.setText("");
            }
        });

        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                view.setText(read());
            }
        });
    }

    public String read() {
        try {
//            打开文件输入流,对应的文件名要绑定
            FileInputStream inputStream = openFileInput(FILE_NAME);
            byte[] buff = new byte[1024];
            int hasread = 0;
            StringBuilder stringBuilder = new StringBuilder("");
//            读取文件的内容
            while ((hasread = inputStream.read(buff)) > 0)
                stringBuilder.append(new String(buff, 0, hasread));
//            关闭流并且返回数据
            inputStream.close();
            return stringBuilder.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }

    public void write(final String content) {
        try {
//            打开文件的输出流,方式我们定义为追加
            FileOutputStream outputStream = openFileOutput(FILE_NAME, MODE_APPEND);
            PrintStream printStream = new PrintStream(outputStream);
//            content就是我们要追加的内容,输入之后要关闭流
            printStream.print(content);
            printStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

在我们的布局文件中就是简单的设置了两个 按钮,一个输入框,一个文本框,来看下成果

这里写图片描述

点击了读写按钮之后的结果:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值