Android File存储

本文介绍了Android中使用Context的onPenFileOutput()和onPenFileInput()方法进行文件存储和读取。onPenFileOutput()方法用于按指定文件名在/data/data/项目包名/files/目录下写入数据,支持MODE_PRIVATE(覆盖)和MODE_APPEND(追加)模式。而onPenFileInput()用于读取该目录下的文件。同时提到了被废弃的MODE_WOELD_READABLE和MODE_WORLD_WRITEABLE模式,以及Java IO流关闭的重要性。此外,讨论了如何检查File写入成功以及通过导出文件在电脑上查看内容。

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

  • Context类提供了PenFileOutput()方法与onPenFileInput()方法。

  • onPenFileOutput():
    用于将数据存储到指定的文件中。这个方法接受两个参数,第一个参数为文件名,在文件创建的时候使用就是这个名称,注意这个指定文件名不包含路径,所有的文件都是默认存储到/data/data/(项目包名)/files/目录下的。第二个参数是文件的操作模式,主要有两种模式可以选择MODE_PRIVATEMODE_APPEND

  • MODE_PRIVATE:
    默认操作,表示当指定同样文件名的时候,所写入的内容将会覆盖原文件中的内容

  • MODE_APPEND:
    表示如果该文件存在,就往文件里面追加内容,不存在就创建新文件夹。

  • MODE_WOELD_READABLE和MODE_WORLD_WRITEABLE:
    这两种模式允许其他的应用程序对我们程序中的文件进行读写操作,由于这两种模式过于危险,容易引起应用的安全漏洞,已经在Android4.2版本废弃

  • onPenFileInput():
    用于从文件中读取数据。它只接受一个参数,即要读取的文件名,然后系统会自动到/data/data/(项目包名)/files/目录下加载这个文件。

  • Java IO流
    如果不关闭的话,那么这个IO资源就会被他一直占用,这样别人想用就没有办法用了,所以这会造成资源浪费。关闭IO流最好写在finally中,如果出现一个异常,你就关不掉了。

  • 数据存储
    public void save(String s) {

    FileOutputStream out;

    BufferedWriter writer = null;

    try {
        //fileName 文件名 MODE_PRIVATE:模式
        out = openFileOutput(fileName, MODE_PRIVATE);//获取FileOutputStream 对象
        //用Java Io流的方式将数据写入文件
        writer = new BufferedWriter(new OutputStreamWriter(out));
        try {
            writer.write(s);//写入数据
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        if (writer != null)
            try {
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
}
  • 数据读取
    public String load() {

    FileInputStream in;

    StringBuffer content = new StringBuffer();

    try {
        //fileName文件名
        in = openFileInput(fileName);//获得FileInputStream 对象
        reader = new BufferedReader(new InputStreamReader(in));
        String len = "";
        try {
            //读取一行数据
            while ((len = reader.readLine()) != null)
             {
            content.append(len);
             }
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        if (reader != null)
            try {
            //用完Io流记得关闭
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
    return content.toString();
}
  • 查看File是否写入成功






    这里写图片描述

    也可以把File文件导出来,用电脑查看你File里面的内容。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值