Environment.getExternalStorageDirectory()和Environment.getExternalStorageDirectory()之间的区别.getAbsolutePath()

时间:2015-06-02 20:59:03

标签: android path environment

之间有什么区别
Environment.getExternalStorageDirectory() 

Environment.getExternalStorageDirectory().getAbsolutePath()

Environment.getExternalStorageDirectory().getCanonicalPath()

Environment.getExternalStorageDirectory().getPath()

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

我在一些例子中看到Environment.getExternalStorageDirectory()的用法如下:

getExternalStorageDirectory() + "/somefolder/anotherfolder/"

让我感到困惑的是getExternalStorageDirectory()本身作为默认值引用了什么,以及为什么在某些情况下人们使用额外的方法,什么时候可以使用简单的getExternalStorageDirectory()而没有任何额外的东西?

3 个答案:

答案 0 :(得分:2)

  

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

然后你已经知道你原来问题的答案(“......之间有什么区别”),因为唯一不同的是这些电话。

  

getExternalStorageDirectory()本身作为默认值引用

它指的是外部存储的根。当用户通过USB线安装他们的Android设备并获得驱动器号或卷或其他内容时,该驱动器指向getExternalStorageDirectory()指向的目录。

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

  

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

好吧,你必须以某种方式创建指向外部存储上某个位置的File个对象。虽然最好使用正确的File构造函数,但是一些懒惰的程序员使用字符串连接。为此,你需要一个字符串。

  

什么时候可以使用简单的getExternalStorageDirectory()而不需要任何额外的东西?

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

答案 1 :(得分:0)

根据文档,一个返回File Object,getAbsolutePath()是File类方法。

答案 2 :(得分:0)

Environment.getExternalStorageDirectory()返回主外部存储目录。

当您致电

时,它会返回File
getExternalStorageDirectory() + "/somefolder/anotherfolder/"

它基本上要求toString()的{​​{1}}

File

@Override public String toString() { return path; } 返回此文件的绝对路径。绝对路径是从文件系统的根开始的路径。