1

我想在外部存储中创建一个新文件夹。我使用这段代码:

            val folderMain = "name"

        val f = File(getExternalStorageDirectory(), folderMain)
        if (!f.exists()) {
            f.mkdirs()
        }

执行后它会工作并在内部存储中创建一个新文件夹,而不是在外部存储中。如何在外部存储中创建新文件夹?

我 100% 确定我的设备中有外部存储,它有 14 GB 可用空间,位置是/storage/extSdCard.

我已经在两部三星手机 Android 版 jellybean 和 Kitkat 上测试了这段代码,但结果相同。

4

3 回答 3

0

您可以在这里找到您的问题的答案:

https://developer.android.com/training/data-storage

我还建议您检查以下结果mkdirs()

if (!f.exists() && !f.mkdirs()) {
    Log.e("mDebug", "Couldn't create " + f.getName());
}
于 2018-10-14T09:24:01.897 回答
0

执行后它会工作并在内部存储中创建一个新文件夹,而不是在外部存储中。

不,它会在 Android SDK 所指的外部存储中创建文件。

我 100% 确定我的设备中有外部存储,它有 14 GB 的可用空间,位置是 /storage/extSdCard。

那代表可移动存储

如何在外部存储中创建新文件夹?

您现有的代码在外部存储的根目录中创建一个目录。您无法写入可移动存储上的任意位置。

可移动存储上最简单的写入位置是由getExternalFilesDirs()getExternalCacheDirs()getExternalMediaDirs()方法提供的位置Context。如果它们返回 2+ 个位置,则第二个和后续位置位于可移动存储上,并且您对它们具有完全的读/写访问权限。

于 2018-10-14T10:56:15.110 回答
0

试试这个代码:

String fileName = "myfile.zip";
    File ZIP_Directory = new File("/sdcard/MOBstate/");
    ZIP_Directory.mkdirs();        
     File outputFile = new File(PDF_Directory, fileName);
     FileOutputStream fos = new FileOutputStream(outputFile);
于 2018-10-14T11:11:28.390 回答