【发布时间】:2014-05-27 18:20:18
【问题描述】:
我正在尝试检查 SD 卡上的子目录结构是否存在;
如果不是,则创建一个新的。
那当然是在我的代码验证 SD 卡已安装并准备就绪之后。
我创建了有效的代码,并且我成功地在手机的 SD 卡上创建了结构,所以我知道我的代码是好的。然后我就去睡觉了。第二天,我将工作代码从我的 TEST 区域移到了我的 WORKING 区域,现在它不起作用了!! :-( 我什至把它移回了测试区,仍然没有工作!!
我猜 Android Gremlins 在晚上做了一些事情来破解密码!
所以...要么是 Android Gremlins 做了什么,要么是我在移动代码时忘记了一些东西(这是一个很长的镜头)。有人有Gremlin驱虫剂吗??
我很确定,在我的手机上运行并实际创建了我现在可以看到的结构的代码是这样的:
String strPathName = m_Context.getExternalFilesDir (null) .toString ();
// This DOES give the Correct Path on the SD Card
File dir;
dir = new File (m_Context.getExternalFilesDir (null) + "/MyDirectory");
dir = new File (m_Context.getExternalFilesDir (null) + "/MyDirectory/SubDir");
dir = new File (m_Context.getExternalFilesDir (null) + "/MyDirectory/SubDir/xxx");
在我的手机上,我可以清楚地看到这个结构。现在还在!!
第二天,(即在 Android Gremlins 访问之后)我试图将这个和其他代码从我的测试区域移动到不同的部分,之后,它不再会创建一个结构。
我使用了除虫器(即 Gremlin Killer),这就是发生的事情。
File dir;
boolean bDirExists;
dir = new File (m_Context.getExternalFilesDir (null) + "/NewDirectory");
bDirExists = (dir.exists () && dir.isDirectory () ); // FALSE
dir = new File (m_Context.getExternalFilesDir (null) + "/NewDirectory/SubDir");
bDirExists = (dir.exists () && dir.isDirectory () ); // FALSE
bDirExists = dir.exists (); // FALSE
bDirExists = dir.isDirectory (); // FALSE
dir = new File (m_Context.getExternalFilesDir (null) + "/NewDirectory/SubDir/xxx");
bDirExists = (dir.exists () && dir.isDirectory () ); // FALSE
如果……我使用前一天使用的原始名称“/MyDirectory/SubDir/xxx”)
那么代码表明目录确实存在
dir = new File (m_Context.getExternalFilesDir (null) + "/MyDirectory");
bDirExists = (dir.exists () && dir.isDirectory () ); // TRUE
dir = new File (m_Context.getExternalFilesDir (null) + "/MyDirectory/SubDir");
bDirExists = (dir.exists () && dir.isDirectory () ); // TRUE
bDirExists = dir.exists (); // TRUE
bDirExists = dir.isDirectory (); // TRUE
现在……我们都知道,程序员永远不会破坏他们的代码,也永远不会将错误引入“已知有效的代码”,所以……。一定是小精灵……正确的??
第一次更新
@ChuongPham 评论说我可能需要在 Manifest 文件中添加正确的权限。
由于代码 DID WORK,这意味着我 DID 已经启用了此权限。
但是,我决定删除这个权限,看看它会抛出什么错误,我认为没有权限它不会编译。然后我运行代码并没有抛出任何错误!是的,它仍然不会创建新文件..
【问题讨论】:
-
在 StackOverflow 上写问题时,您的目标应该是让那些有能力提供帮助的人尽可能轻松地实际提供帮助。多余的喊叫、对虚构生物的引用以及多余的标点符号共同使这个问题比它需要的更难理解。
标签: android file directory directory-structure