返回顶部
首页 > 资讯 > 移动开发 >详解Android 中的文件存储
  • 492
分享到

详解Android 中的文件存储

2024-04-02 19:04:59 492人浏览 安东尼
摘要

目录概要 独立文件 专属文件 internal storage external storage 概要 当我们查看手机的文件管理器的时候,会发现里面的文件五花八门,想要找到自己项目

概要

当我们查看手机的文件管理器的时候,会发现里面的文件五花八门,想要找到自己项目所对应的文件非常困难,甚至有可能压根就找不到自己的文件,本文就来介绍一下APP开发过程当中文件存储的注意事项。

通常我们会将存放的文件分为两种:独立文件和专属文件。顾名思义,独立文件就是独立于APP之外的文件,不会随着APP的删除而删除,而专属文件则是专属于某个APP的文件,当APP删除后,会自动清空相对应的专属文件。

独立文件

独立文件指的是存放在shared/external storage directory下的文件,通常意义上就是我们的SD卡。可以通过以下方法获取SD卡路径:


Environment.getExternalStorageDirectory ()

不建议将文件存储在SD卡的根目录下,这样会污染用户的SD卡根目录,通常是在根目录下建立一个次级目录并将文件存储在次级目录下面:


File sdCardDir = Environment.getExternalStorageDirectory ();
File cacheDir = new File(sdCardDir, "Cache");

得到的路径如下所示:


/storage/emulated/0/Cache

不同平台下SD卡的路径有所差别,所以开发者通常都是持有一个相对路径。

Tips:不同手机厂商外部存储根目录(Environment.getExternalStorageDirectory())的物理地址不一定相同,但它们映射之后的根目录通常都是一致的,映射之后的根目录为:/mnt/sdcard/

还可以通过另一种方法获取一个SD卡的次级目录:


Environment.getExternalStoragePublicDirectory(String)

针对于该方法,Android已经给出了一套固定的String参数:


Environment.DIRECTORY_ALARMS
Environment.DIRECTORY_DCIM
Environment.DIRECTORY_DOCUMENTS
Environment.DIRECTORY_DOWNLOADS
Environment.DIRECTORY_MOVIES
Environment.DIRECTORY_MUSIC
Environment.DIRECTORY_NOTIFICATioNS
Environment.DIRECTORY_PICTURES
Environment.DIRECTORY_PODCASTS
Environment.DIRECTORY_RINGTONES
// ps:调用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
//  得到的路径就是:/storage/emulated/0/Pictures

个人还是更喜欢第一种方法,因为第一种方法更加的灵活,可以自定义次级目录。

当然,在向SD卡存储文件之前,还需要判断SD卡是否存在,判断的方法如下:


if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
  // SD卡存在
}

由于要存储的是独立文件,还需要添加读写权限:


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

通常情况下只要添加写权限即可,添加写权限就默认添了读权限,这两个权限始于Android4.4(KITKAT)

专属文件

专属文件可以存放在external storage,也可以存放在internal storage。external storage指的是SD卡,internal storage指的是手机自带的存储区域。有人可能会有疑问:之前独立文件不也存放在SD卡中吗?怎么专属文件也放在SD卡中,我们的APP怎么区分这两者呢?其中独立文件通常是存放在SD卡的次级目录下,比如刚才提到的"根目录/Cache",而专属文件则是存储于"根目录/Android/data/packge name"目录下面,当APP删除时,会自动销毁这个文件夹。

通常情况下,我们会将一些体量比较小的数据存放在internal storage中,比如Shared Prefrence文件或者数据库文件,而将一些体量较大的文件放在external storage中,比如视频,图片文件。

存储专属文件不需要读写权限~~

internal storage

获取APP在internal storage中存储路径的方法如下:


getCacheDir();
getFileDir();
getDir("name", mode);

得到的路径如下所示:


/data/data/<package name>/cache
/data/data/<package name>/file
/data/data/<package name>/"name"

这是APP的私有路径,对于没有root过的手机,用户是无法访问该路径的,所以安全性有所保障(开发人员可以在AS3.0以上版本的Device File Explorer中访问该路径)。同时手机的SD卡并不是任何时候都可用的,所以我们必须要将重要的数据存放在internal storage中。

根据Android SDK的说法,当手机磁盘空间不足时,系统会自动将清除cache目录下的文件(除cache以外的其它内部存储空间不会被自动清除)。针对这种情况,需要将缓存尽可能存储在非cache文件夹中;或者将cache文件夹下的文件大小控制在系统指标之下,获取系统指标的方法如下:


 getCacheQuotaBytes(java.util.UUID)

如果控制在该指标以下,文件的清除优先级将会被排到最低(指标是Android8.0特性)。

external storage

获取APP在external storage中存储路径的方法如下:


getExternalCacheDir()

得到的路径之前也提过一笔,如下所示:


/storage/emulated/0/Android/data/<package name>/cache

熟悉了external storage的路径后,也可以通过SD卡的根目录来手动创建路径:


File dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data");
File externalCacheDir = new File(new File(dataDir, context.getPackageName()), "cache");
if (!externalCacheDir.exists()) {
  externalCacheDir.mkdirs();
}

除了上面提到过的视频、图片文件,有的时候,开发者还希望在APP的专属路径下放一些可访问的文件,比如crash或者debug的log日志文件,此时internal storage不能满足需求(用户无法访问internal storage并反馈具体日志),就可以将这些专属文件放在external storage目录下。

以上就是详解Android 中的文件存储的详细内容,更多关于Android 文件存储的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解Android 中的文件存储

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

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

猜你喜欢
  • 详解Android 中的文件存储
    目录概要 独立文件 专属文件 internal storage external storage 概要 当我们查看手机的文件管理器的时候,会发现里面的文件五花八门,想要找到自己项目...
    99+
    2024-04-02
  • 详解Android文件存储
    摘要 其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的...
    99+
    2022-06-06
    存储 Android
  • Android 文件存储与SharedPreferences存储方式详解用法
    目录持久化技术简介文件存储1. 将数据存储到文件中2. 从文件中读取数据SharedPreferences 存储1. 将数据存储到 SharedPreferences 中2. 从 S...
    99+
    2024-04-02
  • Android中的存储详解
    目录1、存储在App内部2、SD卡外部存储3、SharedPreferences存储4、使用SQLite数据库存储4.1 自己完成一个BaseDao类4.2 使用Google写的AP...
    99+
    2024-04-02
  • Android 文件数据存储实例详解
    Android之文件数据存储 一、文件保存数据介绍 Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数...
    99+
    2022-06-06
    数据 存储 数据存储 Android
  • Android中的数据储存之文件存储
    当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢?就是指储存在内存中,有可能因为程序关闭或...
    99+
    2023-06-04
  • Android - 文件存储
    一、概念 机身存储在概念上被分为了内置存储和外置存储,插存储卡或外接U盘硬盘都属于外置存储(这年头几乎都不支持插卡,就算外接这种场景属于用户主动转移文件,而不是APP要考虑往那里存)。含有包名的路径都可以使用Context中的方法,不含...
    99+
    2023-09-09
    android
  • Mysql文件存储图文详解
    什么是文件系统 我们知道像 InnoDB、MyIASM 这样的存储引擎都是把表存储在磁盘上的(持久化)。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们, 当...
    99+
    2024-04-02
  • 实例详解Android文件存储数据方式
    总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络。下面通过本文给大家介绍Android文件存储数据方式。 1.文件存储数据使用了Java中的IO操作来进...
    99+
    2022-06-06
    数据 存储 Android
  • 详解Android数据存储之Android 6.0运行时权限下文件存储的思考
    前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是...
    99+
    2022-06-06
    运行 存储 Android
  • android文件存储和SharedPreferences存储的方法
    这篇文章主要讲解了“android文件存储和SharedPreferences存储的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“android文件存储和SharedPreference...
    99+
    2023-06-30
  • Android文件存储SharedPreferences源码解析
    1.我们都知道SharedPreferences 是android可以用来存放key value的的文件。 SharedPreferences sp = getSha...
    99+
    2024-04-02
  • 浅析Android文件存储
    目录一、内部存储二、外部存储2.1、外部公有2.2、外部私有一、内部存储 内部存储,位于data/data/包名/路径下 是否需要用户权限:否 是否能被其他应用访问:否 卸载应用数据...
    99+
    2024-04-02
  • android数据存储之文件存储方法
    文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。 概述 文件存取的核心就是输入流和输出流...
    99+
    2022-06-06
    方法 存储 Android
  • android文件存储和SharedPreferences存储的项目实例
    该实例为课程作业,请尊重劳动成果。 演示 【文件存储】中查看设备保存的文件 目录 activity_main <xml version="1.0" encoding="u...
    99+
    2024-04-02
  • Android文件存储:内部存储,外部存储及其路径
    Android系统数据存储分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都不大,外部存储一般是SD卡的存储,空间一般都比较大。一般我们会把存储内容放在外部存储空...
    99+
    2022-06-06
    存储 Android
  • Android SharedPreferences存储用法详解
    先看Demo运行效果 SharedPreferences详解 SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如...
    99+
    2022-06-06
    Android
  • Android本地存储SharedPreferences详解
    Android本地存储SharedPreferences详解存储位置SharedPreferences数据保存在: /data /data/<package_name> /shared_prefs 文件夹下,以XML格式保存,根...
    99+
    2023-05-31
    android 本地存储 sharedpreferences
  • Android 文件存储及常见问题解决
    Android文件存储 看下网上随处可以搜到的文件存储套路 if(Environment.MEDIA_MOUNTED.equals(Environment.getExtern...
    99+
    2022-06-06
    存储 Android
  • android I/0流操作文件(文件存储)
    目录文件存储I/0流操作文件总结文件存储 文件存储方式不受类型限制,可以将一些数据直接以文件的形式保存在设备中,例如文本文件、PDF ,音频,图片等。存储类型复杂的数据时,通常采用文...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作