检查Android SD卡上的目录是否存在。

65

如何在安卓系统中检查sdcard上是否存在一个目录?

6个回答

134

常规的Java文件IO:

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

你可能还需要检查f.exists(),因为如果它存在且isDirectory()返回false,那么你将会遇到问题。此外还有isReadable()...

这里查看更多你可能会发现有用的方法。


3
请注意,getExternalStorageDirectory()可能实际上并不指向物理SD卡,它可能指向内部存储。http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory() - Chrispix
1
Chrispix,你的评论是误导性的。getExternalStorageDirectory()将指向在所有应用程序之间共享数据的存储。这可能是SD卡,对于没有SD卡的设备,它指向用作外部存储的保留存储区域。内部存储是存储私有数据(通常是data/data)的地方,只供应用程序使用。 - Yash
这对我不起作用,因为getExternalStorageDirectory()返回的是内部存储。 - Luis A. Florit
你可能还想检查一下 f.exists(),因为如果它存在,但 isDirectory() 返回 false,你会遇到问题。你可以解释一下吗?为什么 isDirectory() 会返回 false,而实际上它是存在的呢? - Muhammad Babar
2
@muhammad:它可能存在,只是一个文件,而不是一个目录。 - synic
显示剩余2条评论

46
File dir = new File(Environment.getExternalStorageDirectory() + "/mydirectory");
if(dir.exists() && dir.isDirectory()) {
    // do something here
}

2
需要同时检查 exists()isDirectory() 吗?我的意思是,如果我们只使用其中一个会怎样? - Mann

17
以下代码同样适用于Java文件:
// Create file upload directory if it doesn't exist    
if (!sdcarddir.exists())
   sdcarddir.mkdir();

2

一般使用此函数检查目录是否存在:

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!!'
}

1

我在检查文件/目录方面犯了错误。实际上,你只需要调用isFile()isDirectory()即可。这里是文档

如果你已经调用了isFile()isDirectory(),就不需要再调用exists()了。


注意:上述目录 - http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html 已不存在。 - Joe Cullity

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接