【问题标题】:Check if directory exist on android's sdcard检查android sd卡上是否存在目录
【发布时间】:2011-02-07 04:47:25
【问题描述】:

在android中如何检查sdcard上是否存在目录?

【问题讨论】:

    标签: android directory android-sdcard


    【解决方案1】:

    常规Java文件IO:

    File f = new File(Environment.getExternalStorageDirectory() + "/somedir");
    if(f.isDirectory()) {
       ....
    

    可能还想检查f.exists(),因为如果它存在,并且isDirectory() 返回false,你就会遇到问题。还有isReadable()...

    查看here 了解更多可能有用的方法。

    【讨论】:

    • 我的错误只是我的路径中缺少目录,但谢谢。我开始怀疑android的文件系统是否不支持这样的普通方法:-P
    • 请注意,getExternalStorageDirectory() 可能实际上并不指向物理 sd_card,它可能指向内部存储。 developer.android.com/reference/android/os/…
    • Chrispix,您的评论具有误导性。 getExternalStorageDirectory() 将指向在所有应用程序之间共享数据的存储。这可能是 SD 卡,对于没有 SD 卡的设备,它指向用作外部存储的保留存储区域。内部存储是存储私有数据(对于应用程序 - 通常是数据/数据)的位置。
    • 这对我不起作用,因为 getExternalStorageDirectory() 它返回内部存储。
    • @muhammad:它可能存在并且只是一个文件,而不是一个目录。
    【解决方案2】:
    File dir = new File(Environment.getExternalStorageDirectory() + "/mydirectory");
    if(dir.exists() && dir.isDirectory()) {
        // do something here
    }
    

    【讨论】:

    • 是否有必要同时检查exists()isDirectory()?我的意思是,如果我们使用其中任何一种呢?
    【解决方案3】:

    我在检查文件/目录时犯了错误。事实上,您只需致电isFile()isDirectory()。这是docs

    如果您曾经拨打过isFile()isDirectory(),则无需拨打exists()

    【讨论】:

    【解决方案4】:

    以下代码也适用于 java 文件:

    // Create file upload directory if it doesn't exist    
    if (!sdcarddir.exists())
       sdcarddir.mkdir();
    

    【讨论】:

      【解决方案5】:

      一般用这个函数来检查一个Dir是否存在:

      public boolean dir_exists(String dir_path)
        {
          boolean ret = false;
          File dir = new File(dir_path);
          if(dir.exists() && dir.isDirectory())
            ret = true;
          return ret;
        }
      

      使用如下函数:

      String dir_path = Environment.getExternalStorageDirectory() + "//mydirectory//";
      
      if (!dir_exists(dir_path)){
        File directory = new File(dir_path); 
        directory.mkdirs(); 
      }
      
      if (dir_exists(dir_path)){
        // 'Dir exists'
      }else{
      // Display Errormessage 'Dir could not creat!!'
      }
      

      【讨论】:

        【解决方案6】:

        是的,尝试了很多,下面的代码对我有帮助:)

         File folder = new File(Environment.getExternalStorageDirectory() + File.separator + "ur directory name");
        
                        if (!folder.exists()) {
                            Log.e("Not Found Dir", "Not Found Dir  ");
                        } else {
                            Log.e("Found Dir", "Found Dir  " );
                           Toast.makeText(getApplicationContext(),"Directory is already exist" ,Toast.LENGTH_SHORT).show();
                        }

        【讨论】:

          猜你喜欢
          • 2011-10-28
          • 1970-01-01
          • 2012-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多