返回顶部
首页 > 资讯 > 移动开发 >android I/0流操作文件(文件存储)
  • 894
分享到

android I/0流操作文件(文件存储)

2024-04-02 19:04:59 894人浏览 八月长安
摘要

目录文件存储I/0流操作文件总结文件存储 文件存储方式不受类型限制,可以将一些数据直接以文件的形式保存在设备中,例如文本文件、pdf ,音频,图片等。存储类型复杂的数据时,通常采用文

文件存储

文件存储方式不受类型限制,可以将一些数据直接以文件的形式保存在设备中,例如文本文件、pdf ,音频,图片等。存储类型复杂的数据时,通常采用文件存储。Java提供一套完整的I/О流体系,通过I/О流可以非常方便地访问磁盘中的文件,同样Android 也支持I/O流方式来访问手机等移动设备中的存储文件。

I/0流操作文件

进行I/О流操作文件时,需要先获得文件的输人流和输出流。在Android应用程序中,可以通过上下文环境Context对象提供的openFileInput()和 openFileOuput()两个方法分别来获得文件的输入流和输出流,这两个方法的具体介绍如下。

  • FilelnputStream openFileInput(String name): 用于获取应用程序的数据文件夹下指定name文件名的标准文件输入流,以便读取设备中的文件。
  • FileOutputStream openFileOuput(String name, int mode): 用于获取应用程序的数据文件夹下指定name文件名的标准文件输出流,以便将数据写入设备的文件中。

其中 openFileOutput()方法的第二个参数mode用于指定输出流的模式,即打开文件进行操作的模式。Context类中提供了4个静态常量用于表示不同的输出模式,如下表所示。

4种文件读写模式

模式 功能描述
Context.MODE_PRIVATE 私有模式,该模式所创建的文件都是私有文件,只能被应用本身所访问。因此,该模式下所写入的内容会覆盖原来文件的内容
Context. MODE_APPEND 附加模式,该模式首先会检查文件是否存在,若文件不存在,则创建新文件;若文件存在,则在原文件的末尾追加内容
Context.MODE_WORLD_READABLE 可读模式,该模式的文件可以被其他应用程序读取
Context.MODE_WORLD_WRITABLE 可写模式,该模式的文件可以被其他应用程序读写

除此之外,Context上下文对象还提供了一些方法来访问应用程序的数据文件夹,如下表所示。

访问数据文件夹的方法

方法 功能描述
File getDir(String name, int mode) 在应用程序的数据文件夹下获取或创建name对应的子目录
File getFilesDir() 获取应用程序的数据文件夹的绝对路径
String[] fileList() 返回应用程序的数据文件夹下的所有文件
boolean deleteFile( String name) 删除应用程序的数据文件夹下的指定文件

下面通过代码演示如何使用I/O流对文件进行读写操作

创建xml布局文件

在这里插入图片描述

在这里插入图片描述

xml布局代码如下


<?xml version="1.0" encoding="utf-8"?>
<!-- 线性布局,宽度高度适应屏幕变化,水平方向垂直 -->
<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <!-- 编辑输入框,宽度适应线性布局变化,高度适应自己,设置显示行数为四行 -->
    <EditText
        android:id="@+id/ediFileOut"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:lines="4"/>
    <!-- 保存文件按钮,宽度,高度适应自己,按钮文本显示-->
    <Button
        android:id="@+id/btnWrite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="保存文件"/>
    <!-- 编辑显示框,宽度适应线性布局变化,高度适应自己,设置光标不可见,不可编辑,行数为4-->
    <EditText
        android:id="@+id/editFileIn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:cursorVisible="false"
        android:editable="false"
        android:lines="4"/>
    <!-- 读取文件按钮宽度,高度适应自己,按钮文本显示-->
    <Button
        android:id="@+id/btnRead"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="读取文件"/>
</LinearLayout>

上述界面布局比较简单,只包含两个文本框和两个按钮,分别用于保存文件和读取文件两种操作。

接着创建Activity程序

在这里插入图片描述

在这里插入图片描述

activity代码如下


package com.example.wenjiancuncu;
import android.content.Context;
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.Toast;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class FileIOActivity extends AppCompatActivity {
    private EditText editFileIn, editFileOut; //声明两个文本框
    private Button btnRead, btnWrite; //声明两个按钮
    final String FILE_NAME = "qstIO.txt"; //指定文件名
    @Override //重写父类方法
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); //调用父类方法
        setContentView(R.layout.activity_file_io); //设置布局
        //获取两个文本框
        editFileIn = (EditText) findViewById(R.id.editFileIn);
        editFileOut = (EditText) findViewById(R.id.ediFileOut);
        //获取两个按钮
        Button btnRead = (Button) findViewById(R.id.btnRead);
        Button btnWrite = (Button) findViewById(R.id.btnWrite);
        //以匿名类的形式设置btnRead按钮的事件监听器
        btnRead.setOnClickListener(new View.OnClickListener() {
            @Override //重写接口方法
            public void onClick(View v) {
                //读取指定文件中的内容,并在editFileIn文本框中显示出来
                editFileIn.setText(read());
            }
        });
        //以匿名类的形式设置btnWrite按钮的事件监听器
        btnWrite.setOnClickListener(new View.OnClickListener() {
            @Override //重写接口方法
            public void onClick(View v) {
                write(editFileOut.getText().toString()); //将editFileOut中的内容写入文件中
                editFileOut.setText(""); //清空editFileOut文本框中的内容
            }
        });
    }
    private String read() {
        try {
            FileInputStream fis = openFileInput(FILE_NAME); //打开文件输入流
            byte[] buff = new byte[1024]; //定义一个字节缓存数组
            int hasRead = 0;
            StringBuilder sb = new StringBuilder(""); //创建可变字符串
            //读取文件内容
            while ((hasRead = fis.read(buff)) > 0) {
                //把字节数组转化为字符串并添加到可变字符串中
                sb.append(new String(buff, 0, hasRead));
            }
            fis.close(); //关闭文件输入流
            return sb.toString(); //返回一个字符串
        }catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    private void write(String content) {
        try {
            //以追加模式打开文件输出流
            FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_APPEND);
            PrintStream ps = new PrintStream(fos); //将FileOutStream包装成PrintStream
            ps.println(content); //输出文件内容
            ps.close(); //关闭文件输出流
            //使用Toast显示保存成功
            Toast.makeText(FileIOActivity.this,"保存成功", Toast.LENGTH_LONG).show();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码的核心操作就是文件的保存和读取,其中read()和 write()两个方法分别用于读文件和写文件操作;代码中分别对btnRead 和 btnWrite按钮设置了事件监听器,并在事件处理方法中调用相应的read()或write()方法实现文件的读取或保存。

在AndroidMainfest中声明Activity

在这里插入图片描述

运行结果

在这里插入图片描述

Android应用程序的数据文件默认保存在/data/data/包名/files目录下。在 AndroidDevice Monitor的 File Explorer选项卡中,展开/data/data/com. 包名/files目录,在该目录下可以看到保存的qstIO.txt 数据文件,如下图所示。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结

这篇关于微信demo的文章就到这里了,希望大家可以多多关注编程网的更多精彩内容!

--结束END--

本文标题: android I/0流操作文件(文件存储)

本文链接: https://lsjlt.com/news/128447.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • android I/0流操作文件(文件存储)
    目录文件存储I/0流操作文件总结文件存储 文件存储方式不受类型限制,可以将一些数据直接以文件的形式保存在设备中,例如文本文件、PDF ,音频,图片等。存储类型复杂的数据时,通常采用文...
    99+
    2024-04-02
  • Android - 文件存储
    一、概念 机身存储在概念上被分为了内置存储和外置存储,插存储卡或外接U盘硬盘都属于外置存储(这年头几乎都不支持插卡,就算外接这种场景属于用户主动转移文件,而不是APP要考虑往那里存)。含有包名的路径都可以使用Context中的方法,不含...
    99+
    2023-09-09
    android
  • 详解Android文件存储
    摘要 其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的...
    99+
    2022-06-06
    存储 Android
  • 浅析Android文件存储
    目录一、内部存储二、外部存储2.1、外部公有2.2、外部私有一、内部存储 内部存储,位于data/data/包名/路径下 是否需要用户权限:否 是否能被其他应用访问:否 卸载应用数据...
    99+
    2024-04-02
  • Android编程之SharedPreferences文件存储操作实例分析
    本文实例讲述了Android编程之SharedPreferences文件存储操作的方法。分享给大家供大家参考。具体分析如下: SharedPreferences类提供了一种简单...
    99+
    2022-06-06
    存储 Android
  • 文件 I/O 的艺术:Java 中的优雅文件操作
    ...
    99+
    2024-04-02
  • python持久化存储文件操作方法
    存储文件的重要 一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电脑之后,。 默认数据是加载到内存中,结果也是保存到内存中, 程序执行...
    99+
    2024-04-02
  • Java基础知识之I/O流和File类文件操作
    目录♒I/O流原理及流的分类I/O原理I/O流的分类️文件(File)概念✍️常用操作(File类)总结♒I/O流原理及流的分类 I/O原理 I/O是Input和Output的缩写,...
    99+
    2024-04-02
  • android数据存储之文件存储方法
    文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。 概述 文件存取的核心就是输入流和输出流...
    99+
    2022-06-06
    方法 存储 Android
  • android文件存储和SharedPreferences存储的方法
    这篇文章主要讲解了“android文件存储和SharedPreferences存储的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“android文件存储和SharedPreference...
    99+
    2023-06-30
  • Android中的数据储存之文件存储
    当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢?就是指储存在内存中,有可能因为程序关闭或...
    99+
    2023-06-04
  • Android 文件操作方法
    数据存储与访问常用方式:文件SharedPreferences(偏好参数设置)SQLite数据库内容提供者(Content provider)网络 Activity(Conte...
    99+
    2022-06-06
    方法 Android
  • JavaIO流对文件File操作
    目录什么是文件常用的文件操作创建文件获取文件信息目录的操作和文件删除 什么是文件 文件,对我们并不陌生,文件是保存数据的地方,比如大家经常使用的word文档,txt文件,e...
    99+
    2022-12-08
    Java操作File Java操作文件
  • 操作系统文件系统秘籍:优化文件存储和管理
    文件系统是操作系统的重要组成部分,负责管理计算机存储设备中的文件。文件系统为文件提供了一个统一的访问接口,应用程序可以通过这个接口来读写文件。文件系统还负责维护文件的元数据,例如文件名、大小、创建时间等。 优化文件系统可以显著提高系统效...
    99+
    2024-02-11
    文件系统 优化 存储 管理 性能 可靠性
  • 详解Android 中的文件存储
    目录概要 独立文件 专属文件 internal storage external storage 概要 当我们查看手机的文件管理器的时候,会发现里面的文件五花八门,想要找到自己项目...
    99+
    2024-04-02
  • Android如何实现文件存储
    这篇文章主要讲解了“Android如何实现文件存储”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android如何实现文件存储”吧!1、文件存储案例public class&nbs...
    99+
    2023-06-25
  • Android 文件存储系统原理
    目录存储的可选项存储位置的划分内部存储空间外部存储空间App 私有目录外部公共目录系统目录清除数据和清除缓存清除数据清除缓存数据管理权限存储的可选项 Android 的文件系统类似于...
    99+
    2024-04-02
  • Android实现文件存储案例
    本文实例为大家分享了Android实现文件存储的具体代码,供大家参考,具体内容如下 1、文件存储案例 public class TestActivity extends AppC...
    99+
    2024-04-02
  • Android开发文件存储实例
    Android的文件存储,有I/O流的方式存储,与java一样,还有一种Android自己的SharePreferences存储方法。 下面看一个例子: 用I/O流的方式存储方法和S...
    99+
    2024-04-02
  • Java基础知识之I/O流和File类文件操作方法
    今天小编给大家分享一下Java基础知识之I/O流和File类文件操作方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。♒I/...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作