在安卓系统中创建目录

47

我正在尝试在Android设备的SD卡上构建一个名为"images"的目录。以下是我的代码,但它没有起作用。有人可以给我一些建议吗?

File picDirectory = new File("mnt/sdcard/images");
picDirectory.mkdirs();
8个回答

84

更新:自Android 10、11存储升级以来,Google通过标准编程语言文件操作限制了存储访问。

针对仅目标为Android 10(API 29)及以上版本的应用程序,您需要在Android清单文件中声明“requestLegacyExternalStorage =“ true””以使用基于编程语言的文件操作。

<application android:requestLegacyExternalStorage="true" ....>

==========

如果你想确保正确找到SD卡的地址,你不能确定它总是在特定的地址,那么你需要执行以下步骤!

File directory = new File(Environment.getExternalStorageDirectory()+File.separator+"images");
directory.mkdirs();

如果这个方法对你有用,请告诉我!

同时,您还需要在AndroidManifest.xml文件中添加以下代码行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


嗨,再次感谢你的回答,你非常有帮助,我很感激...所以我尝试了你的代码,结果还是一样。我正在使用文件浏览器来查看文件夹是否被创建,但它并没有显示出已经创建。我不确定我做错了什么。 - Peter
如果你执行 Log.d("Peter's App", Environment.getExternalStorageDirectory()+File.separator+"images");,在 logcat 中会看到什么?它会输出 /mnt/sdcard/images 吗? - Will Tate
2
太棒了!很抱歉我花了这么长时间才考虑到权限可能是问题><。祝你在项目的其余部分玩得开心! - Will Tate
9
你开玩笑吧,没有人会像你一样花那么多时间来回答问题。再次感谢! - Peter
我该如何在应用安装时调用创建文件夹功能? - Si8
显示剩余6条评论

13

我用这个来了解结果:

File yourAppDir = new File(Environment.getExternalStorageDirectory()+File.separator+"yourAppDir");

    if(!yourAppDir.exists() && !yourAppDir.isDirectory()) 
    {
        // create empty directory
        if (yourAppDir.mkdirs())
        {
            Log.i("CreateDir","App dir created");
        }
        else
        {
            Log.w("CreateDir","Unable to create app dir!");
        }
    }
    else
    {
        Log.i("CreateDir","App dir already exists");
    }

4
你可以使用以下内容:
File directory = new File(Environment.getExternalStorageDirectory() + "/images");
directory.mkdirs();

3

Environment.getExternalStorageDirectory() 方法已经废弃,因此您应该使用以下方法:

File directory = new File(this.getExternalFilesDir(null).getAbsolutePath() + "/YourDirectoryName");
directory.mkdirs();

它在<package-name>/files/文件夹中创建一个文件夹。它在资源管理器中不可见。我认为它将是应用程序内部的。 - MindRoasterMir
@MindRoasterMir 是的,它是这样的。 - Kuvonchbek Yakubov
如何在API 29和30中创建外部空间(例如下载等)中的文件夹,谢谢。 - MindRoasterMir
你尝试过这个答案吗:https://dev59.com/0lMH5IYBdhLWcg3wxijj#58348429 - Kuvonchbek Yakubov
我将尝试它。谢谢。 - MindRoasterMir

2

值得注意的一件事是,如果您始终从mkdirs()中得到false,请尝试将设备从计算机上拔下来,看看它是否能够创建文件夹。至少我尝试过,对我有用,目前我正在寻找解决此问题的方法。


0

这应该会有所帮助。
首先获取外部存储的路径:

File root=Environment.getExternalStorageDirectory();

然后:

File picDirectory = new File(root.getAbsolutePath(), "mnt/sdcard/images");
picDirectory.mkdirs();           

0

要在SD卡中创建文件,您需要使用Environment.getExternalStorageDirectory()

   /**
     * Creates a new directory inside external storage if not already exist.
     *
     * @param name The directory name
     */
    public static void createNewDirectory(String name) {
            // create a directory before creating a new file inside it.
            File directory = new File(Environment.getExternalStorageDirectory(), name);
            if (!directory.exists()) {
                directory.mkdirs(); 
            }
        }

以下是两个重要的参数,可以帮助您创建目录: 1. directory.mkdirs():

创建由此文件命名的目录,如果需要则创建丢失的父目录。 2. directory.mkdir():

创建由此文件命名的目录,假设其父目录已存在。

如需了解更多有关getExternalStorageDirectory()工作原理的信息,请参见link


0

为了创建特定的根目录及其子文件夹,我使用以下代码

String root = Environment.getExternalStorageDirectory().toString();//get external storage

File myDir = new File(root + "/grocery"+"/photo/technostark");//create directory and subfolder

File dir=new File(root + "/grocery"+"/data");//create subfolder

myDir.mkdirs();

dir.mkdirs();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接