SNIPPET 1
public class MyLogs {
private static File root;
private static String rootPath;
static {
rootPath = Environment.getExternalStorageDirectory().toString() + "/MyFolder/Sub1/Sub2";
root = new File(rootPath);
root.mkdirs();
}
}
使用上面提到的代码我无法在SD卡上创建文件夹。 root.mkdirs()
在这种情况下返回false,但是当我使用rootPath = Environment.getExternalStorageDirectory().toString() + "/MyFolder/Sub1/Sub2/";
时(我在Sub2之后添加了'/'),它会创建文件夹。我搜索过它但没有得到答案。
SNIPPET 2
String root = Environment.getExternalStorageDirectory().toString();
File myImageFolder = new File(root + "/MyFolder");
myImageFolder.mkdirs();
在这种情况下,“MyFolder”应该充当文件,但它允许我在这种情况下创建文件夹。 请在此赐教我。 提前谢谢。
答案 0 :(得分:3)
好问题。我在这里的初步答案是不正确的,即使它收到了5个赞成票。在Android libcore源中错误的线索后花了一些时间后重写了答案。
您的代码正确且尾部斜杠不重要。 File
构造函数无论如何都会删除任何尾部斜杠。 (请参阅sources中fixSlashes()
调用的init()
。)
可以解释为什么没有创建目录的原因:
您的应用没有WRITE_EXTERNAL_STORAGE
权限。
代码未运行。它在静态初始化器中。你必须要做到实例化该类,以便类加载器加载它并运行静态初始化程序。
答案 1 :(得分:1)
我没有对此进行测试,但我确信这是正确的: 如果没有尾随分隔符(在您的情况下为/),Android(有点基于UNIX)将其解释为文件(而不是目录)。这是由于Java中的File类表示文件和目录。 而你根本无法在文件中创建目录。