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