【问题标题】:Simple creation of folder under SDCARD in Android StudioAndroid Studio中SDCARD下文件夹的简单创建
【发布时间】:2015-03-12 10:00:43
【问题描述】:

我已经使用代码在 SD 卡下创建了一个文件夹。但该文件夹永远不会创建。我添加了使用权限 android:name="android.permission.WRITE_EXTERNAL_STORAGE" 来显示。

 File folder = new File(Environment.getExternalStorageDirectory().toString()+"/Images");
       folder.mkdirs();


       if(folder.exists()){
           Toast.makeText(getApplicationContext(),"exists",Toast.LENGTH_LONG).show();
       }else{

           Toast.makeText(getApplicationContext()," not exists",Toast.LENGTH_LONG).show();
       }

【问题讨论】:

  • 我刚开始学习 Android 开发...如果有人能帮忙就太好了!

标签: android android-studio


【解决方案1】:

尝试添加此代码以调试是否可以在外部存储上实际写入:

Log.d("MyActivity", "Can write: " + Environment.getExternalStorageDirectory().canWrite());

并验证 mkdirs 的结果:

boolean result = folder.mkdirs();
Log.d("MyActivity", "mkdirs: " + result);

【讨论】:

  • Log.d("MyActivity", "可以写:" + Environment.getExternalStorageDirectory().canWrite());语句显示 Can Write:false。但我已将 android:name="android.permission.WRITE_EXTERNAL_STORAGE" 添加到我的清单中。还有其他因素吗?
  • if (Environment.MEDIA_MOUNTED.equals(state)) { Log.d("Test", "sdcard mount and writable"); } 显示 sdcard 已挂载和可写
【解决方案2】:
File directory = new File(pathname);
                if (directory != null && !directory.exists()
                        && !directory.mkdirs()) {
                    try {
                        throw new IOException("Cannot create dir "
                                + directory.getAbsolutePath());
                    } catch (IOException e) {

                        e.printStackTrace();
                    }
                }

【讨论】:

    【解决方案3】:

    试试这个并检查日志的流程-->

          //First check if the sd card is mounted or not      
             if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
    
                    {
                       // sd card mounted
                       Log.d("SDCard", "SDcard is present");
                    }  
    
                    File folder = new File(Environment.getExternalStorageDirectory() + File.separator +"Images/");
                 if(!folder.exists())
    
                  {
                    folder.mkdirs();
                    Log.d("SDcard", "Folder created");
                  }   
                else
             {
                    Log.d("SDCard", "Folder already exists");
             }       
         }
    

    【讨论】:

    • if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 显示 sd 卡已安装。但是 Log.d("MyActivity", "可以写:" + Environment.getExternalStorageDirectory().canWrite());显示 Can Write:false。
    • if (Environment.MEDIA_MOUNTED.equals(state)) { Log.d("Test", "sdcard mount and writable"); } 显示 sdcard 已挂载和可写
    • 我启动文件夹创建的任何次数 (!folder.exists()) 都是真的...永远不会创建文件夹
    • 似乎是权限问题。从清单中删除权限并重新添加它们。
    • 对对!我在应用程序块之前添加了权限,现在可以正常工作了..谢谢
    【解决方案4】:

    您还应该添加:

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

    【讨论】:

    • 感谢您的回复...但它不起作用!代码中的if条件显示“不存在”。还有其他因素吗?
    • 您可以这样创建文件:new File(Environment.getExternalStorageDirectory(), "/Images"); 如果您只需要创建一个目录,请使用:directory.mkdir()。你检查了吗:folder.getPath()?它看起来像你应该的样子吗?
    【解决方案5】:

    问题解决了!我在清单的错误部分添加了该块。它应该在该部分之前或之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 2020-04-27
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多