检查android sd卡上是不是存在目录

Posted

技术标签:

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

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()

【讨论】:

注意:以上目录 - download.oracle.com/javase/1.4.2/docs/api/java/io/File.html 不再存在。【参考方案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();
                

【讨论】:

以上是关于检查android sd卡上是不是存在目录的主要内容,如果未能解决你的问题,请参考以下文章

Android SD卡上文件操作及记录日志操作具体方法

在 SD 卡上存储 Android 应用程序数据

删除 SD 卡上的文件夹

在 Android 应用程序中解压缩 sd 卡上的压缩文件

Android:从 sd 卡上的特定位置获取缩略图

Android (Studio) FileNotFoundException 但文件在 SD 卡上