我正在尝试在手机的外部存储设备(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资源管理器中,SD卡的名称实际上是“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位,以及64位版本的Eclipse。我的手机是LG-MS770。
无论如何请帮助。不知道为什么getExternalSorage不起作用。
答案 0 :(得分:1)
我正在尝试在手机的外部存储设备(SD卡)中创建一个文件
自2011年初以来制造的大多数设备上,Android SDK所称的“外部存储”不是SD卡。
不知道为什么getExternalSorage无效。
工作得很好as documented。它完全没有达到你的期望。
在Android 4.4之前,没有任何记录和支持的方式来访问任何类型的可移动存储。在Android 4.4上,您现在拥有getExternalFilesDirs()
和getExternalCacheDirs()
(请注意复数形式),如果存在此类存储,则可以访问可移动存储上的特定目录。
答案 1 :(得分:0)
首先,/mnt/sdcard/MyBrand/MyApp/MyFile.srl
是正确的:SD Card
可以是Windows资源管理器分配的标签。
无论如何,看看它所说的getExternalStorageDirectory documentation:
如果用户已安装此目录,则该目录当前可能无法访问 他们的计算机已从设备中删除,或者发生了其他一些问题。您 可以使用getExternalStorageState()确定其当前状态。
可能,在SD Card
为mounted
时进行调试,这是错误的。
然后,mkdir
如果失败则不会抛出exception
; createNewFile
应该这样做,但是当你读到像“或其他一些问题已经发生的事情”时,你应该为头痛做好准备。
答案 2 :(得分:0)
getExternalStorage
非常令人困惑。它不代表您插入手机的SD卡,而是代表插入手机时计算机上显示的内容。
这是您可以浏览的存储空间,可以在手机上放置一些图像,音乐等,也可以通过手机获取。