当前位置:首页 » 安卓系统 » android内部存储读取

android内部存储读取

发布时间: 2024-02-26 03:27:20

⑴ 手机内部存储空间是哪个文件夹

/storage/emulated/0 手机的内部储存根目录,/storage/emulated/1 手机的内存卡储存根目录。

android的API的得到的就是/storage/emulated/0/,这个路径我们用的时候一般直接进/sdcard/或者/mnt/sdcard/,其实是一个相同的位置。

/storage/emulated/0这个是手机内部存储空间(即手机内存),手机连接电脑后,在手机上选择管理文件就可以查看了。



扩展汪搭资料

主要敬余包含自身系统占据的空间和用户可用的空间困稿拿两部分。ROM相当于PC机上的硬盘,用来存储和保存数据。

即使是断电,ROM也能够保留数据。手机中的系统文件,或者图片、音乐、照片等通常是存储在这里面的。

从技术上讲,这个代码在Windows上也能运行,因为python会在调用open()函数时识别出任何一种斜杠。即便如此,你也不应该依赖它。

不是所有的python库都可以在错误的操作系统上使用错误的斜杠,特别是当它们有外部程序或库接口时。并且,Python对混合斜杠类型的支持仅限Windows,它无法反向工作。

参考资料

网络—手机系统内存

凤凰网—Python小技巧:3个处理文件路径的简单方法

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

安卓开发离不开手机存储,然而大部分人对于安卓开发中的存储概念存在误区,内部外部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中源码其实就是根据这个方法获取路径的

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

⑶ Android无root,获取其他应用内部存储的数据

最近在负责一个项目,需要获取其他应用的内部存储中的文件,即data/data/下的文件,并转存到sdcard上。有一点Android基础蠢散的都知道data/data/中的文件对其他应用是不可见的,在没有源码的条件下,无法直接访问data/data中的文件。问了公司的大佬,大佬提供了两种思路,一种是run-as命令进入data/data,直接;另一种是hook。具体怎么实施,且听我慢慢道来。

安装包是debug包(release包也可以利用反编译重新打包,变成debug包,网上有很多文章可以参考)

1、连接手机到电脑,打开usb调试

2、命令行带氏氏中输入 adb shell run-as <包名>

示例:

com.ss.android.ugc.aweme(抖音)不是debug包,无法使用run-as命令。

com.example.yilialin.jsonreport(我自己写的app)是debug包,使用run-as命令可以进入data/data目录下,输入 ls ,可以看到data/data目录下的所有文件/文件夹

3、输入 cat <文件名> > <sdcard中的文件名>  ,直接拷贝到sdcard中

示例:

不出现任何提示,表明已经成功拷贝到了sdcard中。

几行命令直接搞定

1、需要手工敲命令,难以核友实现自动化

2、debug包才能使用

没有限制,安装包是release包或者debug包都可以,手机不需要root

有关于xposed插件可以参考文章:https://blog.csdn.net/yzzst/article/details/47659479

https://blog.csdn.net/niubitianping/article/details/52571438

https://blog.csdn.net/niubitianping/article/details/52574650

其实无root也是可以使用virtualxposed的,将xposed插件和想要hook的app克隆到virtualxposed中就可以使用了。

不受root权限和debug包的限制

前期需要做的事情多,xposed插件编写比较麻烦

我研究了几个星期的xposed hook,才学会了怎么使用,原理还不是特别明白,先用着吧==

听别人说再多也只是纸上谈兵,关键是要自己动手操作,有很多问题都是在实施的过程中出现并解决的,在问题中学习不失为一种好方法。

奉上我的xposed插件,供学习参考,有什么不对的地方,还望不吝赐教!

https://github.com/Yiliayan/douyinxposed.git

⑷ 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内部存储、外部存储的区别

热点内容
编译java的程序需要使用什么命令 发布:2024-11-28 09:28:03 浏览:656
python二进制utf8 发布:2024-11-28 08:56:41 浏览:253
三方网站源码 发布:2024-11-28 08:30:51 浏览:108
windows版ftp软件免费下载 发布:2024-11-28 08:25:28 浏览:857
淘宝帐号怎么改密码 发布:2024-11-28 07:46:05 浏览:12
监控未配置怎么办视频 发布:2024-11-28 07:44:41 浏览:504
android获取手机的ip 发布:2024-11-28 07:42:13 浏览:173
python打开文件窗口 发布:2024-11-28 07:36:13 浏览:557
cpu二级缓存的作用 发布:2024-11-28 07:36:12 浏览:1001
net数据库控件 发布:2024-11-28 07:32:58 浏览:101