当前位置:首页 » 存储配置 » 安卓内存储互换

安卓内存储互换

发布时间: 2022-11-26 09:05:20

❶ 怎样将华为手机内部存储的东西移至sd卡中

华为手机将文件移动到microSD卡步骤如下:

长按要移动的文件,点击“移动”,返回到“本地”的根目录下,选择“SD卡”最后选择“移动”。

❷ 怎样把手机里的内部存储,移到SD卡上去,设置的是SD卡

(1)第一种方法:通过手机管家或者安全管家转移,在这个软件上有“释放内存”,或者通过移动软件或图片等来实现.
(2)第二种方法:将手机连接到电脑,在电脑上找到图片储存的位置,然后将者音乐保存到电脑上。利用读卡器将电脑与读卡器连接。然后找到存在电脑上的音乐,利用复制或者发送将音乐转移到sd卡上。
sd卡就是俗称的内存卡,sd卡(secure
digital
memory
card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用。

❸ 安卓内外部存储完全解析 -- 别再弄混了

安卓开发离不开手机存储,然而大部分人对于安卓开发中的存储概念存在误区,内部外部SD卡傻傻分不清?

以下引用来自对 官方文档 的理解

呵呵呵,先别说话,然而重点来了(敲黑板),按照官方的说法,

内部存储是指系统的存储空间,没有root是访问不到的呦亲,比如sharedPreferenced或者database都是保存在这里面的。

外部存储,又分为 2 部分:

然而现实中,常常有同事把手机那个32G,64G存储叫做内部存储= =,宝宝好累,人家明明是 ExternalStorage !!

希望本篇能让大家对内外部存储有一个正确鲜明的认识

getFilesDir()

路径如下

文档 云:若想操作该路径,你需要一个输出流:

就像这样:

注: this 是 context 对象

路径下会看到新文件哦

如果你还想读取的话, 文档 云:你需要一个输入流:

Log如下

getCacheDir()

文档 云:

路径如下:

特别的,还有getDir() :

getDir("- -!.txt", Context.MODE_PRIVATE).getAbsolutePath()

路径如下:

app_是系统自己加上去的

内部存储就是系统的存储,没有root你是看不到的,内部存储最大特点就是可以用Context对象调用各个获取路径的方法。比如: context.fileList()
那就是

下的文件遍历。

而 deleteFile("ABC") 就是

删除下名为 ABC 的文件
</br></br></br>

操作外部存储你首先需要以下权限

当你申请了write权限,那么read权限默认也就通过啦

再判断状态:

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState))

Environment.getExternalStorageDirectory()

这个路径根据手机厂家不同会有些许变化

直接传入 Environment 中的常量获取相应的路径,如下:

Environment.(Environment.DIRECTORY_ALARMS));

或者

Environment.(Environment.DIRECTORY_PICTURES));

公有目录下,系统会区分不同类别 (例如铃声在系统设置中显示为铃声而不是音乐)

4.4以后访问该目录不再需要权限了

getExternalFilesDir(String type)

eg.
getExternalFilesDir(Environment.DIRECTORY_MUSIC)

特别的:ContextCompat下的

ContextCompat.getExternalFilesDirs(context,type)

返回一个File[],在4.4以后第一条数据默认外部主存储目录,第二条数据就是sd卡路径啦,但是注意4.4之前是没有第二条数据的哦

该目录下的特点是卸载程序后,该目录和其下所有文件均会被删除

getExternalCacheDir()

注意,使用该目录注意管理空间,你不能等系统帮你清理,而是自己清理不再需要的缓存

特别的:ContextCompat下的

ContextCompat.getExternalCacheDirs()

道理同上

发现特点了吗朋友,无论外部内部,只有路径中有包名,那么就是私有的,而且是随着程序的卸载而被删除的, 有包名的路径均是Context中的方法,而公有的路径均是Environment调用的

这个货真真是要了老命,一般的方法根部不好使,结合网上有的方法加上公司项目中的方法,总结如下:

百分百好用的获取SD卡路径方法:

最后集合 path 中的值就是SD卡根目录

虽然无视版本百分百好用,但是如果你的手机有SD卡槽却没插SD卡,该方法最后 path 返回的是 null ,也就是说该方法无法判断到底是没插SD卡还是根本不支持SD卡

其实还有一种方法

String path = System.getenv("SECONDARY_STORAGE");

该方法只要你手机支持SD卡,无论你插没插SD卡,均会返回SD卡路径,但是 6.0及以上该方法被移除

Environment中源码其实就是根据这个方法获取路径的

安卓官方文档大家一定要看,他就是我们开发者的权威呀,圣经呀!!

❹ 安卓内部外部文件存储

总述

觉得十分有必要搞清楚内存,内部存储和外部存储的区别,还有我们在开发中真正将数据存在了手机的哪儿。

先提一个问题:手机设置的应用管理中,每个App下都有清除数据和清除缓存,清除的分别是哪里的数据?

一 内存,内部存储和外部存储

整个存储空间分为内部存储和外部存储两部分,内部存储中又包含RAM和ROM等部分。

内部存储,即InternalStorage,也常说内置存储卡,这是手机内置的存储空间,出厂时就被确定,是手机的一个硬件指标。类比电脑的内存。

外部存储,即ExternalStorage,也常说外置存储卡,手机出厂时并不存在,是由用户自由扩展的存储空间,常见的就是SD卡。类比电脑的外接移动硬盘。
RAM,即常说的运行时内存,是手机运行时存储数据和指令的地方,注意是运行时内存。类比电脑的内存条。
ROM,用来存放一些系统文件,应用配置和其他数据的地方,是内部存储中主要存储区域。类比于Windows电脑的C盘。

上图中运行内存即RAM,共2G,机身存储即内部存储,共8G。
打开手机的文件管理,再点击手机一项,可以看到下图:

上图中箭头所指的地方,可以进行内部存储与外部存储的切换,当前页为内部存储下的展示,这只是Android系统存储数据的一部分而已,大部分数据都对用户隐藏。至于红框部分下面继续讲。

二 详说存储

一般来说,App软件大都安装在内部存储的ROM区,当然现在也有办法安装在SD卡上,但这需要App自身支持及SD卡分区等一系列操作,下面讨论的App是安装在ROM区的。

以Genymotion模拟器设备为例来分析,型号是三星GalaxyS5。直接使用AndroidStudio的DDMS,打开File Explorer,我们可以看到下图:

这张图是手机根目录下的完整目录结构图,内外部存储均包含在内。不过有些文件内容需要root权限才能看到。

上面展示的内部存储图就是其中一部分子目录。

选其中几个重要的文件夹介绍。

2.1 /data包:主要存储手机应用的相关数据。

如上图的二级目录中,/data/app文件夹下存放三方应用的apk文件;/data/data文件夹下存放系统应用和三方应用的包私有数据,每个应用都有独属于自己的包。

选一个三方应用包——com.X.main,来分析三级目录——/data/data/com.X.main下都有什么数据:

由包名不难看出:cache包存放缓存数据,databases包存放使用SQLite存储的数据,files包存放普通数据(log数据,json型数据等),shared_prefs包存放使用SharedPreference存放的数据。这些包都是由系统创建的。

2.2 /mnt/sdcard/storage包:这三个包,与手机的部分内置存储卡数据和外置存储卡数据有关。

上面的完整目录结构图中有其子目录信息展示。

以内置存储卡来说,通常用sdcard0表示:Android4.1上,首先挂载到目录/storage/sdcard0上面,/sdcard和/mnt/sdcard都只是指向/storage/sdcard0的软链接;Android4.2上,首先挂载到目录/storage/emulated/0(0就表示内置存储)上面,为兼容之前版本,又挂载到/storage/emulated/legency上面,/storage/sdcard0、/sdcard和/mnt/sdcard都只是指向/storage/emulated/legency的软链接。(挂载相当于真正位置,软链接相当于指针)。

/mnt/sdcard是Android2.2及之上版本使用,/sdcard是Android2.1及之下版本使用。

在手机的文件管理中看到的内置存储卡文件,如上面文件管理页面的图,就是/storage/emulated /0包的子目录,Android包的路径就是:/storage/emulated/0/Android。

2.3 其他
/dev包:Linux系统的常规文件夹。
/system包:系统配置的文件夹,比如Android系统框架(framework)、底层类库(lib)、字体(font)等。

三 存储相关操作

在Android开发中,我们常打交道的存储空间有三部分。

一是根目录下路径为 /data/data/包名/XX 的文件。开发中SQLite数据、SharedPreference数据均保存在这里,虽说我们可以读写操作,但这部分空间由系统维护。

二是在外置存储卡上做存储。暂时不讲。

三是在内置存储卡中做存储。在/storage/emulated/0/Android/data包下或与/storage/emulated/0/Android包同级目录上,建立App包存储数据,这部分空间均由开发者维护。区别在于/storage/emulated/0/Android/data包下的数据为私有目录数据,会随App卸载被清除,与/storage/emulated/0/Android包同级的数据(如系统目录DCIM包,DOWNLOWN包和bluetooth包,还有下图中的包)属于公有目录数据,不会随App卸载被清除,这就会造成数据的卸载残留。

Google官方建议开发者将App的数据存储在私有目录即/storage/emulated/0/Android/data包下,这样卸载App时数据会随之被系统清除,不会造成数据残留。

对存储空间进行操作,首先要获取存储空间的存储路径,对此Android提供了Environment类和Context类来获取路径。

就上面对存储空间的划分,第一部分空间对用户不可见,是在具体包名下的,和特定的App有关,所以对这些数据的访问需调用Context类中的方法;第三部分空间对用户可见,私有目录数据仍与特定App有关,需调用Context类中的方法,而公有目录数据与App无关,应调用Environment类中的方法。

总结如下图:

写了个小程序对Environment类和Context类相关方法测试,如下图:(冒号前为方法名,冒号后为输出结果)

四 回答最初提出的问题

手机设置的应用管理中,每个App下都有清除数据和清除缓存,清除的分别是哪里的数据?

还是用上面的Genymotion模拟器设备来分析,主要测试三部分数据:

内部数据:/data/data/包名/XXX

外部私有数据:/storage/emulated/0/Android/data/包名/XXX

外部公有数据:/storage/emulated/0/包名/XXX

测试结果图就不上了,直接上结论:
清除缓存:将外部私有数据下的cache包(/storage/emulated/0/Android/data/包名/cache)清除,将内部数据下的cache包下的内容(/data/data/包名/cache/XXX)清除 。

清楚数据:将外部私有数据包(/storage/emulated/0/Android/data/包名)清除,将内部数据下的所有内容(/data/data/包名/XXX)清除;

而两种操作对外部公有数据均无影响。

安卓手机的内置存储和SD卡存储互换

设置---存储---首选安装位置---点选“可卸载的SD卡”

❻ Android 内部存储/外部存储 及 读写权限

Android 使用 VFS (Virtual File System) 虚拟文件系统。VFS提供了供存储设备挂载的节点,同一存储设备经过分区后,不同的分区可以挂载到不同的节点上,如手机的内置存储卡。

内置存储卡 / 外置SD卡
内部存储 / 外部存储

VFS 的目录以 / 为根节点,根节点下面又有不同的节点。物理存储设备就是挂载到这些节点上。

内部存储卡/外置SD卡 内部存储/外部存储

首先明确, 内置存储卡/外置SD卡 是在 物理层面 相对于 手机大众用户 来说的。
外置SD卡:可手动插拔的SD卡。
内置存储卡:焊接在手机内部不可拆卸的存储卡。

而, 内部存 /外部存储 是在 文件系统逻辑层面 相对于 开发者 来说的,指具体的路径。
一般针对某个应用而言的,属于该应用的存储路径叫内部存储,反之为外部存储。

路径: /data/data/package_name

/data/data/ 下都是已安装应用的目录,该目录下包含的文件都是以包名作为文件名的目录,例如 /data/data/com.sankuai.meituan

获取内部存储的方式如下:

其中,参数 mode 指创建模式,一种 4 种

注意: Android 7.0 以上 android.os.Build.VERSION.SDK_INT>=Build.VERSION_CODES.N 使用3/4 常量时,将会导致SecurityException,这意味着 不能通过名称共享私有文件
尝试共享 file://URI URI将会导致FileUriExposedException,StrictMode API政策禁止在您的应用外部公开file://URL。如果您的应用需要与其他应用共享私有文件,则可以使用 FileProvider 与 FLAG_GRANT_READ_URI_PERMISSION 配合使用。 Android 7.0 行为变更 通过FileProvider在应用间共享文件吧

外部存储,可以是 外置SD卡 或 内置存储卡的部分分区。

外部存储,分为 公共目录 和 私有目录

获取方式

检查可用性的方法:

Android 4.3 以下,只能通过 Context#getExternalFilesDir(type) 来获取外部存储在内置存储卡分区的私有目录,无法获取外置SD卡。

Android 4.3 开始,可以通过 Context#getExternalFilesDirs(type) 获取一个File数组,包含了内置存储卡分区和外置SD的私有目录地址。

可以使用兼容库的静态方法 ContextCompate.getExternalFilesDirs() 兼容 4.3。

感谢以下文章作者
解析Android内部存储、外部存储的区别

❼ 【06-14求助】安卓4.4可以把手机存储内存和外置SD卡互换吗

可以即使是秦始皇的长城,也总有一天是要倒的。

❽ 安卓4.2.2内置存储空间与内存卡调换方法

系统设置-存储-默认存储位置 选择SD卡,或者内部存储

❾ 安卓手机内外存储置换有什么危害

其实这对手机硬件是没有损害的 就是更改手机系统的指令 让手机的scard0 换为scard1 这只是一段更改手机系统小代码 而且这是可逆的 就是说你随时可以换回来

❿ 怎样将华为手机内部存储的东西移至sd卡中

对于EMUI 3.1平台及以下系统的手机,大部分第三方应用默认安装在内部存储中,无法直接安装到MicroSD卡中。部分手机支持将某些应用移至 MicroSD卡中,这个与应用本身有关。
部分机型从EMUI 3.0或EMUI 3.1平台升级到EMUI 4.0平台后,保留了将应用移动到MicroSD的功能,如荣耀7,P8青春版。
出厂版本是EMUI 4.0平台及以上和部分升级到EMUI 4.0平台的手机,出于安全和性能考虑,不支持将应用程序安装到MicroSD卡上,也不支持安装在内部存储的应用程序移动到MicroSD卡上。
应用移动到SD卡方法:
EMUI 2.3:点击“设置”,在“全部设置”界面的“应用程序”区域,点击“应用程序管理”,选择想移动的应用程序,然后点击“移至SD 卡”。成功移到SD卡后,该选项会变为“移至手机内存”。
EMUI 3.X:点击“设置”,在“全部设置”界面的“应用”区域,点击“应用管理”,选择想移动的应用程序,然后点击“移至SD 卡”。
部分升级到EMUI 4.0平台的手机:点击“设置 > 应用管理”,点击想移动的应用程序,然后点击“存储 > 更改”
EMUI 4.0及以上:Android 6.0 及6.0以后的版本中,为了运行流畅和数据安全考虑,谷歌已经不支持将第三方应用程序及其数据移动到 microSD 卡中。与此同时,华为 EMUI4.0 之后的系统也取消了将移动应用程序数据移动到 microSD 卡的操作入口。

热点内容
七源码 发布:2025-07-27 06:55:50 浏览:42
水密码什么面膜好 发布:2025-07-27 06:55:48 浏览:972
荒野行动脚本吧 发布:2025-07-27 06:53:15 浏览:157
遗传算法的交叉概率 发布:2025-07-27 06:40:10 浏览:281
求中位数算法 发布:2025-07-27 06:39:33 浏览:535
手机解压利器怎么用 发布:2025-07-27 06:37:58 浏览:620
javalinuxip 发布:2025-07-27 06:37:55 浏览:478
歌手sql 发布:2025-07-27 06:26:49 浏览:123
会编程的软件 发布:2025-07-27 06:20:16 浏览:836
jsp连接数据库步骤 发布:2025-07-27 06:18:34 浏览:877