Android 在内部存储器中创建嵌套文件夹

Android 在内部存储器中创建嵌套文件夹,android,storage,internal,Android,Storage,Internal,我目前正在使用内部存储。我想创建多个文件夹,如主文件夹/子文件夹/文件名。 我已经准备了很多教程,我找不到最好的解决方案。。我还收到错误java.io.FileNotFoundException:open失败:EISDIR(是一个目录)。 我的问题是 这个错误是什么?任何人都可以解释这一点 如何在内部存储器中创建文件夹 这样做: 字符串文件夹\u main=“NewFolder” 如果要在其中创建另一个文件夹: File f1 = new File(Environment.getExterna

我目前正在使用内部存储。我想创建多个文件夹,如主文件夹/子文件夹/文件名。

我已经准备了很多教程,我找不到最好的解决方案。。我还收到错误java.io.FileNotFoundException:open失败:EISDIR(是一个目录)。

我的问题是

  • 这个错误是什么?任何人都可以解释这一点
  • 如何在内部存储器中创建文件夹
    • 这样做:

      字符串文件夹\u main=“NewFolder”

      如果要在其中创建另一个文件夹:

      File f1 = new File(Environment.getExternalStorageDirectory() + "/" + folder_main, "product1");
      if (!f1.exists()) {
          f1.mkdirs();
      }
      
      最后我得到了这个

      File myMainDir = context.getDir("MainFolder", Context.MODE_PRIVATE);
      
      File mySubjectDir = new File(myMainDir, "subFolder");
      mySubjectDir.mkdir();
      
      File myModuleDir = new File(mySubjectDir, "semiSubFolder");
      myModuleDir.mkdir();
      
      File myFinalDir = new File(mySubjectDir, "fileName.mp4");
      
      // Save External Storage
      
      String DNAME = "MainFolder"+"/"+subFolder+"/"+semiSubFolder;
      File rootPath = new File(Environment.getExternalStorageDirectory().toString(), DNAME);
      if(!rootPath.exists()) {
          rootPath.mkdirs();
      }
      
      if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
          Log.v("Cannot use storage","Cannot use storage");
      }
      
      File myFinalDir = new File(rootPath,"fileName.mp4");
      
      创建嵌套文件夹

      //保存内部存储

      File myMainDir = context.getDir("MainFolder", Context.MODE_PRIVATE);
      
      File mySubjectDir = new File(myMainDir, "subFolder");
      mySubjectDir.mkdir();
      
      File myModuleDir = new File(mySubjectDir, "semiSubFolder");
      myModuleDir.mkdir();
      
      File myFinalDir = new File(mySubjectDir, "fileName.mp4");
      
      // Save External Storage
      
      String DNAME = "MainFolder"+"/"+subFolder+"/"+semiSubFolder;
      File rootPath = new File(Environment.getExternalStorageDirectory().toString(), DNAME);
      if(!rootPath.exists()) {
          rootPath.mkdirs();
      }
      
      if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
          Log.v("Cannot use storage","Cannot use storage");
      }
      
      File myFinalDir = new File(rootPath,"fileName.mp4");
      

      您正在使用运行时权限吗?后代码打开失败。。。您试图以文件形式打开某个文件,但它是一个目录。。。不言自明,但请显示代码“这是什么错误?”--您正在尝试对目录而不是文件执行某些文件操作。由于您拒绝提供详细信息,我们无法更具体地说明。“如何在内部存储器中创建文件夹”--使用标准Java I/O。在
      Context
      上使用
      getFilesDir()
      获取您所称的
      mainFolder/
      ,并从中创建子目录(例如,
      File subdir=new File(getFilesDir(),“subFolder”);subdir.mkdirs();
      )。除了
      getFilesDir()
      部分之外,这与在其他Java环境中使用目录没有明显区别!我只想创建内部存储,而不是外部存储。