How to create a directory in External SD in android application

前端 未结 4 771
暖寄归人
暖寄归人 2021-01-25 09:39

I want to create a directory on \"/mnt/extsd/MyFolder\" this path. while calling mkdir() it returns false.I inserted the sdcard on my tablet, got the external path as \"/mnt/ext

4条回答
  •  南笙
    南笙 (楼主)
    2021-01-25 10:13

          
    

    I have two folders like extSdCard and sdcard in my samsung galaxy s3.

    Use the below code to choose.

    private String[] mFilePaths;
    
    File storageDir = new File("/mnt/");
    if(storageDir.isDirectory()){
        File[] dirList = storageDir.listFiles();
        for (int i = 0; i < dirList.length; i++)
        {
            mFilePaths[i] = dirList[i].getAbsolutePath();
            System.out.println("...................................."+mFilePaths[i]);
        }
    }
    
    File Dir;
    if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))//check if sd card is mounted
    {
        Dir=new File(android.os.Environment.getExternalStorageDirectory(),"your folder name");
    
        if(!Dir.exists())// if directory is not here
            Dir.mkdirs() // make directory
    }
    

    Edit

    To get the paths of internal and external storage. below code works on samsung galaxy s3.

    String externalpath = new String();
    String internalpath = new String();
    
    public  void getExternalMounts() {
        Runtime runtime = Runtime.getRuntime();
        try
        {
            Process proc = runtime.exec("mount");
            InputStream is = proc.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            String line;
    
            BufferedReader br = new BufferedReader(isr);
            while ((line = br.readLine()) != null) {
                if (line.contains("secure")) continue;
                if (line.contains("asec")) continue;
    
                if (line.contains("fat")) {//external card
                    String columns[] = line.split(" ");
                    if (columns != null && columns.length > 1) {
                        externalpath = externalpath.concat("*" + columns[1] + "n");
                    }
                }
                else if (line.contains("fuse")) {//internal storage
                    String columns[] = line.split(" ");
                    if (columns != null && columns.length > 1) {
                        internalpath = internalpath.concat(columns[1] + "n");
                    }
                }
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        System.out.println("Path  of sd card external............"+externalpath);
        System.out.println("Path  of internal memory............"+internalpath);
    }
    

    Now you can use the path os external storage to create a folder.

    if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))//check if sd card is mounted
    {
        Dir=new File(externalpath,"your folder name");
    
        if(!Dir.exists())// if directory is not here
            Dir.mkdirs() // make directory
    }
    

提交回复
热议问题