我正在尝试在手机的外部存储(SD卡)中创建文件。

File F = new File(Environment.getExternalStorageDirectory() + File.separator + "MyBrand" + File.separator + "MyApp" + File.separator + "MyFile.srl");

但这是在内部存储区域中创建的。我在Windows资源管理器中签到。调试时,F的路径为“ /mtn/sdcard/MyBrand/MyApp/MyFile.srl”,这是错误的,因为在Windows资源管理器中,sdcard的名称实际上是“ SD卡”(带有空格)。我还在getExternalStorageDirectory()的末尾尝试了.getAbsolutePath,但它确实做了同样的事情。

我创建此文件的代码:

if (F.exists() == false)
{
  try
  {
    F.getParentFile().getParentFile().mkdir();
    F.getParentFile().mkdir();
    F.createNewFile();
  }
  catch (IOException e)
  {
    e.printStackTrace();
  }

  scr_save();
}
else
  scr_load();


它确实执行了mkdirs()和createNewFile(),但是scr_save和scr_load总是抛出FileNotFound或IOException异常。

编辑:
当没有插入计算机时,我也一直在进行测试,以确保没有干扰。为了安全起见,我总是在拔出路径和文件之前将其删除。它似乎创建了目录和文件,但随后却无法正确读取(可能无法正确序列化吗?我使用此文件存储序列化的对象)。

编辑:
最初有一个错误。我将路径+文件名作为F的单个参数输入。现在我将路径和文件名作为2个单独的字符串传递。但是,我仍然遇到同样的问题:(

我在清单(.WRITE_EXTERNAL_STORAGE)中具有正确的权限

我使用Windows 7 64位以及Eclipse的64位版本。我的手机是LG-MS770。

无论如何请帮助。不知道为什么getExternalSorage无法正常工作。

最佳答案

我正在尝试在手机的外部存储(SD卡)中创建文件


自2011年初以来制造的大多数设备上,Android SDK所称的“外部存储”不是SD卡。


不知道为什么getExternalSorage无法正常工作。


它工作正常,并且as documented。这根本达不到您的期望。

直到Android 4.4为止,尚无记录和受支持的访问任何类型的可移动存储的方法。在Android 4.4上,您现在具有getExternalFilesDirs()getExternalCacheDirs()(请注意复数),如果存在这样的存储,它们可以使您访问可移动存储中的特定目录。

10-04 17:01