【问题标题】:Creating Folder in Internal memory在内存中创建文件夹
【发布时间】:2026-01-21 19:50:02
【问题描述】:

我无法获得在内存中创建文件夹的方法,

我在Android create folders in Internal MemoryProblem facing in reading file from Internal memory of android 中进行了几次对话。但我仍然无法满足我的要求。

我的要求是,我想在内存中创建一个文件夹,我想在那里存储一个视频。

非常感谢您提供宝贵的反馈意见。

【问题讨论】:

    标签: android


    【解决方案1】:

    试试下面的

    File mydir = context.getDir("users", Context.MODE_PRIVATE); //Creating an internal dir;
    if (!mydir.exists())
    {
         mydir.mkdirs();
    }     
    

    【讨论】:

    • 我认为这里不需要检查是否存在。根据文档:“如果该目录不存在,则该目录将被创建。”
    • if(!mydir.exists) 应该是 if(!mydir.exists())
    • 你如何将文件添加到这个特定的目录?
    • 它的路径是什么??
    • 你能解释一下context是什么吗?
    【解决方案2】:

    这是我用于在内部存储器中创建文件的代码:

        File myDir = context.getFilesDir();
        // Documents Path
        String documents = "documents/data";
        File documentsFolder = new File(myDir, documents);
        documentsFolder.mkdirs(); // this line creates data folder at documents directory
    
        String publicC = "documents/public/api." + server;
        File publicFolder = new File(myDir, publicC);
        publicFolder.mkdirs(); // and this line creates public/api.myservername folder in internal memory
    

    【讨论】:

    • 你不知道我找了多久。每次我尝试它时,它都会在文件目录之外创建文件,并将“app_”附加到目录中。 +1 来自我的出色、小巧实用的解决方案。
    • 这会在内存和应用程序包中创建文件夹。
    【解决方案3】:

    要在手机主存储器(通常是内部存储器)上创建目录,您应该使用以下代码。请注意Environment.getExternalStorageDirectory()中的ExternalStorage不一定指sdcard,它返回手机主存储内存

    File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "MyDirName");
    
    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.d("App", "failed to create directory");
            return null;
        }
    }
    

    使用此代码创建的目录将对电话用户可见。另一种方法(如接受的答案)在位置(/data/data/package.name/app_MyDirName)中创建目录,因此普通手机用户将无法轻松访问它,因此您不应使用它来存储视频/照片等等

    您需要权限,在 AndroidManifest.xml 中

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

    【讨论】:

    • 错误和误导 - 没有像 android.permission.WRITE_INTERNAL_STORAGE 这样的权限
    • 此答案来自 2016 年 5 月,请使用当时使用的 android 版本检查此权限。 Android 版本会发生变化,他们的权限也会发生变化。它将在 Android 5.0 中运行
    • 又是假的从来没有这样的内部存储权限 - 甚至暗示它背叛了对android文件系统的深刻而根本的误解。实际情况是,应用始终拥有自己的内部存储文件夹的权限。
    【解决方案4】:
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
    File direct = new File(Environment.getExternalStorageDirectory()+"/folder_name");
    
    if(!direct.exists()) {
         if(direct.mkdir()); //directory is created;
    }
    

    【讨论】:

      【解决方案5】:

      “data/package_name”目录中有一个“cacheDirectory”。

      如果你想在那个缓存内存中存储一​​些东西,

      File cacheDir = new File(this.getCacheDir(), "temp");
      if (!cacheDir.exists())
          cacheDir.mkdir();
      

      this 是上下文。

      【讨论】:

        【解决方案6】:
        try {
            File cashDir = new File(dir.getCanonicalPath(),"folder");
            if(!(cashDir.exists())) cashDir.mkdirs();
        } catch (IOException e) {
            e.printStackTrace();
        }
          
        

        【讨论】:

        • 请为您对 OPs 问题的解决方案添加某种解释。人们无法弄清楚这会产生什么
        最近更新 更多