Android在内存中创建文件夹

Android在内存中创建文件夹,android,storage,internal,Android,Storage,Internal,是否有任何方法/允许在Android的内部内存中创建文件夹。例如: - data -- com.test.app (application's main package) ---databases (database files) ---files (private files for application) ---shared_prefs (shared preferences) ---users (folder which I want to create) 例如,我可以在内存中创建用

是否有任何方法/允许在Android的内部内存中创建文件夹。例如:

- data
-- com.test.app (application's main package)
---databases (database files)
---files (private files for application)
---shared_prefs (shared preferences)

---users (folder which I want to create)

例如,我可以在内存中创建
用户
文件夹吗?

我使用此选项在内存中创建文件夹/文件:

File mydir = context.getDir("mydir", Context.MODE_PRIVATE); //Creating an internal dir;
File fileWithinMyDir = new File(mydir, "myfile"); //Getting a file within the dir.
FileOutputStream out = new FileOutputStream(fileWithinMyDir); //Use the stream as usual to write into the file.
getDir(“mydir”,…);这将创建您的.package/app\u mydir/

 /** Retrieve or creates <b>path</b>structure inside in your /data/data/you.app.package/
 * @param path "dir1/dir2/dir3"
 * @return
 */
private File getChildrenFolder(String path) {
            File dir = context.getFilesDir();
    List<String> dirs = new ArrayList<String>(Arrays.<String>asList(path.split("/")));
    for(int i = 0; i < dirs.size(); ++i) {
        dir = new File(dir, dirs.get(i)); //Getting a file within the dir.
        if(!dir.exists()) {
            dir.mkdir();
        }
    }
    return dir;
}
/**在/data/data/you.app.package中检索或创建pathstructure/
*@param路径“dir1/dir2/dir3”
*@返回
*/
私有文件getChildrenFolder(字符串路径){
File dir=context.getFilesDir();
List dirs=newarraylist(Arrays.asList(path.split(“/”));
对于(int i=0;i
如果希望用户轻松访问文件,则不应使用此选项

File newdir= context.getDir("DirName", Context.MODE_PRIVATE);  //Don't do
if (!newdir.exists())
    newdir.mkdirs();
相反,请执行以下操作:

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

File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "MyDirName");

if (!mediaStorageDir.exists()) {
    if (!mediaStorageDir.mkdirs()) {
        Log.d("App", "failed to create directory");
    }
}
使用此代码创建的目录将很容易被手机用户看到。另一种方法(首先提到)在位置(/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" />

安卓改变了存储的安全性, 有关更多详细信息,请查看视频

你也可以在安卓10上试试

File mydir = new File(getApplicationContext().getExternalFilesDir("Directory Name").getAbsolutePath());
    if (!mydir.exists())
    {
        mydir.mkdirs();
        Toast.makeText(getApplicationContext(),"Directory Created",Toast.LENGTH_LONG).show();
    }
目录的路径将位于应用程序数据中

  private File createFile(String fName)  {
            String filePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/" + fName+".wav";
            File newFile = new File(filePath);
            println(":File path = "+newFile+"\n "+filePath);
            if (!newFile.exists()) {
                try {
                    newFile.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                    toastMsg("Unable to Create New File !");
                }
            } else {
                toastMsg("File Already Exists");

            }

            return newFile;

        }
//请求多个权限

private void reqMulPerm(){
        String permissions[]={
                Manifest.permission.ACCESS_BACKGROUND_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
        };

        if(permissions.length!=0){
            ActivityCompat.requestPermissions(this,permissions,1);
        }
    }

从投票结果来看,这似乎是一个有用的答案。。请您逐行说明读取同一文件内容的代码。由于该文件位于“mydir”目录中,如何读取该文件。如果目录中还有其他文件夹,该怎么办?“路径”是我所关心的。@Gautam M。请检查本教程是否适合您。谢谢仅供参考,在我的华为手机上,私人文件/文件夹存储在此处:/data/user/0/your.app.name。它也是应用程序本身可以访问的唯一文件夹。有些手机没有那么严格的限制,甚至允许您访问根目录。是的,您可以在memoryyes中创建文件夹,没错,getExternalStorageDirectory()指的是手机的主存储,如何在sd卡中创建文件夹呢?这段代码没有像whatsapp那样创建单独的文件夹。@prodev getExternalStorageDirectory()没有在内部存储下创建文件夹,只是在sd卡中为真实设备创建文件夹。。。我们测试了您的答案,但没有奏效……对这种方法的有效性进行一点解释将大有帮助。;-)[详细解释我的意思是,你应该添加一些解释,以指导将来可能偶然发现此答案的人。仅代码答案是低质量的答案。
File f = new File(Environment.getExternalStorageDirectory(), "FolderName");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            try {
               Files.createDirectory(Paths.get(f.getAbsolutePath()));
            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
            }
        } else {
            f.mkdir();
            f.mkdirs();
            Toast.makeText(getApplicationContext(), f.getPath(), Toast.LENGTH_LONG).show();
        }