之间有什么区别
Environment.getExternalStorageDirectory()
和
Environment.getExternalStorageDirectory().getAbsolutePath()
或
Environment.getExternalStorageDirectory().getCanonicalPath()
或
Environment.getExternalStorageDirectory().getPath()
我知道getAbsolutePath(),getCanonicalPath()和getPath()是什么。
我在一些例子中看到Environment.getExternalStorageDirectory()的用法如下:
getExternalStorageDirectory() + "/somefolder/anotherfolder/"
让我感到困惑的是getExternalStorageDirectory()本身作为默认值引用了什么,以及为什么在某些情况下人们使用额外的方法,什么时候可以使用简单的getExternalStorageDirectory()而没有任何额外的东西?
答案 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;
}
返回此文件的绝对路径。绝对路径是从文件系统的根开始的路径。