Environment.getExternalStorageDirectory().getAbsolutePath()给出了一个不同的路径--Android

Sib*_*ing 11 android android-sdcard

我试着把东西写进手机内存.

起初,我将路径硬编码为:

myFile = new File("/sdcard/" + txtName.getText() + ".txt");
Run Code Online (Sandbox Code Playgroud)

这完全没问题.

然后,eclipse给了我一个警告,说我不应该像这样硬编码路径,我应该做以下事情:

myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/"+ txtName.getText() + ".txt");
Run Code Online (Sandbox Code Playgroud)

然后我按照修正建议,避免警告.

但是,我在writer类上遇到了运行时异常.

然后,我打印出来Environment.getExternalStorageDirectory().getAbsolutePath()进行调试.结果是

/存储/ sdcard0

.但实际上之前工作得很好的硬编码的那个

/SD卡

.

为什么会这样?

如果我想避免警告,我怎么能以更"正式和正确"的方式获取路径目录而不是硬编码路径?

PS:我的手机是HTC One X,没有外置SD卡插槽.我想32GB存储装有一个内置的SD卡,因此,本质应该是相同的.

Com*_*are 15

为什么会这样?

由于多年来外部存储的路径发生了变化,因此您首先应该从未对路径进行硬编码.

如何以更"正式和正确"的方式获取路径目录而不是硬编码路径?

使用Environment.getExternalStorageDirectory().

在您的测试环境中,/sdcard/storage/sdcard0设备制造商设置的符号链接或硬链接.但是,并不能保证所有设备都有这样的/sdcard符号链接.

我想32GB存储空间配有内置SD卡

外部存储是板载32GB闪存的一部分.

  • 完全同意这一点**但是,并不能保证所有设备都有这样的/ sdcard符号链接**.当我使用`Environment.getExternalStorageDirectory()`返回名为`sdcard0`的内部存储器的路径时,我的外部sdcard被命名为`extsdcard`.它适用于samsug galaxy s3. (2认同)