【问题标题】:How can I create a new directory on the SD card programmatically?如何以编程方式在 SD 卡上创建新目录?
【发布时间】:2011-04-17 10:16:50
【问题描述】:

我想以编程方式在 SD 卡中创建一个新目录,并且我还想删除该目录。我该怎么做?

【问题讨论】:

    标签: android


    【解决方案1】:

    要创建目录,您可以使用以下代码:

    File dir = new File("path/to/your/directory");
    try{
      if(dir.mkdir()) {
         System.out.println("Directory created");
      } else {
         System.out.println("Directory is not created");
      }
    }catch(Exception e){
      e.printStackTrace();
    }
    

    要删除一个空目录,可以使用以下代码:

    boolean success = (new File("your/directory/name")).delete();
    if (!success) {
       System.out.println("Deletion failed!");
    }
    

    要删除非空目录,可以使用以下代码:

    public static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i=0; i<children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
    
        return dir.delete();
    }
    

    也许你也需要这个权限:

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

    这个答案也是一个很好的资源:

    How to create directory automatically on SD card

    【讨论】:

    • try catch 中不需要包含 mkdir() 方法,因为如果文件夹存在,则返回 false 并且不会抛出异常
    【解决方案2】:

    要创建一个目录,你可以使用

    File myDirectory = new File(Environment.getExternalStorageDirectory(), "dirName");
    
    if(!myDirectory.exists()) {                                 
      myDirectory.mkdirs();
    }
    

    删除它,

     myDirectory.delete();
    

    别忘了添加权限:

    uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
    

    【讨论】:

    • 无需检查目录是否存在。如果目录已创建,mkdirs() 将返回 true,如果失败或目录已存在,则返回 false。
    【解决方案3】:
    mkdir() for
    
    File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/abcabcabc"); 
    directory.mkdir();
    
    
    mkdirs() for
    File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Mani/abcxyz");
        directory.mkdirs();
    

    【讨论】:

      【解决方案4】:
      new File(Environment.getExternalStorageDirectory(), "DirName").mkdirs();
      

      【讨论】:

        【解决方案5】:

        如果要在其下创建根目录和子文件夹

        String root = Environment.getExternalStorageDirectory().toString();
        
        File myDir = new File(root + "/rootfoldername"+"/your sub folder name");
        
        File dir=new File(root + "/rootfoldername"+"/your sub folder name");
        
        myDir.mkdirs();
        
        dir.mkdirs();
        

        【讨论】:

          【解决方案6】:

          我已经为我的项目创建了这样的目录和子目录..

                  File root = android.os.Environment.getExternalStorageDirectory(); 
          
                  File dir = new File (root.getAbsolutePath() + "/MP3 Music/"); //it is my root directory
          
                  File favourite = new File (root.getAbsolutePath() + "/MP3 Music/" + "Favourites"); // it is my sub folder directory .. it can vary..
          
                  try
                  {
                       if(dir.exists()==false) 
                       {
                               dir.mkdirs();
                       }
                      /* else
                       {
                          // Toast.makeText(MainActivity.this, "Root Directory is already exists", Toast.LENGTH_LONG).show();
                       }*/
          
                       if(favourite.exists()==false) 
                       {
                           favourite.mkdirs();
                       }
          
                  }
                  catch(Exception e){
                    e.printStackTrace();
          
                  }
          

          【讨论】:

            猜你喜欢
            • 2011-01-09
            • 2020-11-25
            • 1970-01-01
            • 2013-04-28
            • 1970-01-01
            • 1970-01-01
            • 2011-06-05
            • 2012-03-13
            • 1970-01-01
            相关资源
            最近更新 更多