Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Environment.getExternalStorageDirectory()和Environment.getExternalStorageDirectory().getAbsolutePath()之间的差异_Android_Path_Environment - Fatal编程技术网

Android Environment.getExternalStorageDirectory()和Environment.getExternalStorageDirectory().getAbsolutePath()之间的差异

Android Environment.getExternalStorageDirectory()和Environment.getExternalStorageDirectory().getAbsolutePath()之间的差异,android,path,environment,Android,Path,Environment,两者之间有什么区别 Environment.getExternalStorageDirectory() 及 或 或 我知道什么是getAbsolutePath()、getCanonicalPath()和getPath() 我在一些示例环境中看到。getExternalStorageDirectory()的用法如下: getExternalStorageDirectory() + "/somefolder/anotherfolder/" 让我困惑的是默认情况下getExternalStora

两者之间有什么区别

Environment.getExternalStorageDirectory() 

我知道什么是getAbsolutePath()、getCanonicalPath()和getPath()

我在一些示例环境中看到。getExternalStorageDirectory()的用法如下:

getExternalStorageDirectory() + "/somefolder/anotherfolder/"

让我困惑的是默认情况下getExternalStorageDirectory()本身指的是什么,以及为什么在某些情况下人们会使用额外的方法,而在没有任何额外内容的情况下只使用getExternalStorageDirectory()是可以的?

根据文档,一个返回文件对象,而getAbsolutePath()是文件类方法

我知道什么是getAbsolutePath()、getCanonicalPath()和getPath()

那么你已经知道了你原来问题的答案(“两者之间有什么区别…”),因为唯一不同的是那些电话

默认情况下,getExternalStorageDirectory()本身指的是什么

它指的是外部存储的根。当用户通过USB电缆安装Android设备并获取驱动器号、卷或其他信息时,该驱动器指向
getExternalStorageDirectory()
指向的目录

一般来说,开发人员不应该使用
getExternalStorageDirectory()
,而应该使用
getExternalFilesDir()
Context
上的kin,或者
Environment
上的
getExternalStoragePublicDirectory()

为什么在某些情况下人们会使用额外的方法

嗯,您必须以某种方式创建指向外部存储器上某个位置的
文件
对象。虽然最好使用适当的
文件
构造函数,但有些懒惰的程序员使用字符串连接。为此,你需要一根绳子

什么时候可以只使用getExternalStorageDirectory()而不使用任何额外的内容


永远不要,或者接近它,仅仅因为它本身不是一个有用的价值。这类似于询问在Windows编程中何时使用
C:
。这是一个驱动器号,很少是一个简单的驱动器号本身就足够了。我们需要一个目录或文件的路径,为此,我们需要将内容添加到
C:
(至少,一个反斜杠)。

当我通过USB电缆安装Android设备时,两个卷会出现名称“Phone”和“Card”。应用程序文件夹位于“手机”卷中。根据您的解释,“Phone”是我外部存储目录的根目录。我说得对吗?如果这是真的,外部存储目录在物理上不是指我手机的外部存储卡(可移动的),而内部存储目录在物理上始终是内部的(不可移动的)。我说得对吗?@Majidoureftekhari:“我说得对吗?”——对。这些卷的名称,以及是否有超过外部存储卷的名称,取决于制造商。“外部存储目录在物理上并不意味着我的手机的外部存储卡(可移动的)”--通常不在自2011年以来生产的设备上。
Environment.getExternalStorageDirectory().getCanonicalPath()
Environment.getExternalStorageDirectory().getPath()
getExternalStorageDirectory() + "/somefolder/anotherfolder/"