Java Android:如何检查SD卡上是否存在文件

Java Android:如何检查SD卡上是否存在文件,java,android,testing,Java,Android,Testing,我试图用此代码检查SD卡上是否存在文件,但我遇到了一些问题。我的Android手机上的API版本是19,应用程序的API版本是19,但我不想使用其他应用程序,比如zedge,也有很多例外。请给我一些关于如何检查该文件是否存在的提示 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedI

我试图用此代码检查SD卡上是否存在文件,但我遇到了一些问题。我的Android手机上的API版本是19,应用程序的API版本是19,但我不想使用其他应用程序,比如zedge,也有很多例外。请给我一些关于如何检查该文件是否存在的提示

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    File extStore = Environment.getExternalStorageDirectory();
    File myFile = new File(extStore.getAbsolutePath() + "/test.txt");

    if(myFile.exists()){
        Log.d("File", "exists");
    }

}


public boolean isExternalStorage() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}
}

我的清单文件如下所示:

<?xml version="1.0" encoding="utf-8"?>



您的代码只是检查sdcard/fileName.ext中是否存在文件:

File extStore = Environment.getExternalStorageDirectory();
    File myFile = new File(extStore.getAbsolutePath() + "/test.txt");

    if(myFile.exists()){
        Log.d("File", "exists");
    }
要搜索整个文件系统(目录树),我们需要一个递归函数,该函数输入目录或将文件与搜索文件名进行比较:

public static boolean searchForFile(File root, File mySearchFile)
{
    if(root == null || mySearchFile == null) return; //just for safety   

    if(root.isDirectory())
    {
        Boolean flag = false;
        for(File file : root.listFiles()){
            flag = searchForDatFiles(file, mySearchFile);
            if(flag) return true;
       }
    }
    else if(root.isFile() && root.getName().equals(mySearchFile.getName())
    {
        return true;
    }
 return false;
}
更新


刚才看到您只在根文件夹中查找文件。检查链接以了解检查文件是否存在的四种方法。此外,上面的代码也只适用于sdcard,但不推荐使用,因为它将解析第一次遇到的任何文件夹。适用于整个目录树搜索。

您会发现许多具有相同问题的链接及其解决方案您的问题太模糊了。您已经在检查文件是否存在。你说的“其他应用程序的例外”是什么意思?好的,但是现在我试图检查这个文件是否存在,它是硬编码路径,因为稍后我会尝试加密它。我不需要在Entire系统中搜索具有给定名称的文件。
public static boolean searchForFile(File root, File mySearchFile)
{
    if(root == null || mySearchFile == null) return; //just for safety   

    if(root.isDirectory())
    {
        Boolean flag = false;
        for(File file : root.listFiles()){
            flag = searchForDatFiles(file, mySearchFile);
            if(flag) return true;
       }
    }
    else if(root.isFile() && root.getName().equals(mySearchFile.getName())
    {
        return true;
    }
 return false;
}