我正在尝试在手机的外部存储(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()
(请注意复数),如果存在这样的存储,它们可以使您访问可移动存储中的特定目录。