Java 如何使用文件名检查(内部/外部存储)中是否存在文件?

Java 如何使用文件名检查(内部/外部存储)中是否存在文件?,java,android,file,Java,Android,File,我一直在做一个项目,我将从API中获取一个文件名,并且必须检查该文件是否存在于设备中并播放它 我从API中获得了Screenshot.jpg作为文件名,并且在我的存储中存在一个同名文件 但是当我使用这段代码时,我被返回false。我也检查过其他代码 public boolean isFilePresent(String fileName) { String path = this.getFilesDir().getAbsolutePath() + "/" + fileName;

我一直在做一个项目,我将从API中获取一个文件名,并且必须检查该文件是否存在于设备中并播放它

我从API中获得了
Screenshot.jpg
作为文件名,并且在我的存储中存在一个同名文件

但是当我使用这段代码时,我被返回false。我也检查过其他代码

public boolean isFilePresent(String fileName) {
    String path = this.getFilesDir().getAbsolutePath() + "/" + fileName;
    File file = new File(path);
    return file.exists();
}

我哪里做错了?任何帮助都将不胜感激

试试这样的方法:

public boolean isFilePresent(Context context, String fileName) {
    File dirFiles = context.getFilesDir();

    File[] filesArray = dirFiles.listFiles();

    for (File file : filesArray) {
        if (file.getName().equals(fileName)) {
            return true;
        }
    }

    return false;
}

可能是您使用了
this.getFilesDir()

相反,请使用
Environment.getExternalStorageDirectory().toString()
例如,它完全取决于文件所在的位置


就像我之前说的,自己调试它,用“预期的”文件路径打印(或呈现一个toast),然后验证它不存在

使用
Environment.getExternalStorageDirectory()
这就是获取文件目录的方式

然后,您将在它之后添加文件路径,因此您应该执行以下操作

if(!new File(Environment.getExternalStorageDirectory().toString()+"/myFolder/"+"myFile").exist())
{
// file is not exist
}

请记住检查运行时权限,因为它是一个特殊权限

可能的副本,请尝试打印路径,然后验证它是否存在(通过ssh或在文件浏览器中手动打开)。你的检查是正确的,唯一的嫌疑犯是一个错误的路径,它不是重复的!我无论如何都不知道文件的路径。在上面的链接中,文件的路径必须通过anks@GuyKhmel传递,我会检查一下,给我们发送你的文件插入码。这对我没有帮助@Thomas Mary。我再次返回false,不需要执行
toString()
。相反,可以这样做
File File File=new File(Environment.getExternalStorageDirectory(),“Screenshot.jpg”)路径是罪魁祸首!谢谢大家!