2014-09-03 64 views
0

我正在研究一个需要将一些.txt存储到android的项目,并将其从计算机中获取以供其他用途。根据我从文档中读到的内容,我知道有两种类型的存储:1内部,它位于手机内部,是应用程序专用的。 2外部,其中包括SD卡和手机的内部存储。我想保存它外部 - >内部,而且我用这行代码来做到这一点:Android文件存储如何工作?

public String WalkDir = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/Walks/";

当我登录WalkDir,logcat的说:“/存储/模拟/ 0”,我停了下来该应用程序,使用adb shell进行检查,并且没有文件夹“0”但是“传统”。我拔下手机并将其插回,“Walks”文件夹现在位于根目录中,我不需要adb shell来访问它。

所以我的问题是,你能帮助解释这个系统是如何工作的吗?为什么“0”消失?什么是“遗产”?为什么当我拔下&插件时,文件在内部存储器中?

非常感谢!

+0

否。有内部,外部和可移动内存。后者是一个微型SD卡。前两个内置到设备中。不要使用adb进行调查。在设备上使用文件资源管理器应用程序。 – greenapps 2014-09-03 19:45:52

回答

0

那些是什么在Linux中被称为符号链接(如同在Windows快捷键),在不同的Android系统应用使用..

/存储/ SD卡是符号链接的文件夹,这意味着当你打开其中的一个,它重定向到原来的(/ data/media/0),因为0只是在android 4.2中实现的一个多用户功能,但只能在平板机器人上启用。 为什么这个Sym-Link™:简单,所以它dosent中断应用程序(不仅文件资源管理器类型的应用程序,但所有的应用程序)。 仍然没有得到,为什么它会打破?。简单。 android api有很多方法可以从文件夹写入/读取文件,你可以手动完成,你可以获得数据路径,你可以获得SD卡路径等等。所以为了不破坏他们只是做这些sym链接,这就是为什么在一个应用程序中,存储拥有者在/ sdcard上列出,而在其他应用程序中是/ storage等等。由于Android的这些变化而破坏的应用程序的一个示例是钛备份,您需要更改其上的内部存储,因此它可以正常工作。

2个挂载点指向相同的存储设备和分区。 如果您在一个文件夹中创建了某些内容,它将显示在另一个文件夹中。同样适用于删除东西。 他们没有带走更多的存储空间,因为它只有一次,但显示两次。

您也不需要担心它,因为文件浏览器通常将其默认目录设置为这些位置之一。

据我所知,Google将Android 4.2的挂载点更改为/ storage/emulated/0 /,原因是它们切换到了sdcard的MTP和EXT4(?)。其他安装点仍然在那里兼容。