在Android上检查SD卡中文件是否存在

10

我想检查SD卡上是否存在一个文本文件。 文件名为 mytextfile.txt。以下是代码:

FileOutputStream fos = openFileOutput("sdcard/mytextfile.txt", MODE_WORLD_WRITEABLE);

我该如何检查这个文件是否存在?

6个回答

50

这应该可以解决问题,我已经用推荐的API调用getExternalCacheDir()替换了硬编码的SD卡引用:

File file = new File(getExternalCacheDir(), "mytextfile.txt" );
if (file.exists()) {
  //Do action
}

4
请注意:getExternalCacheDir() 可能不是您想要的。如果您需要一个在应用程序被卸载后将被清除的存储在sd卡上的目录(例如“缓存”目录),请使用 getExternalCacheDir()。但是,如果您需要 SD 卡的顶层目录,则最好使用:File sdDir = new File(Environment.getExternalStorageDirectory().getPath())。 - DEzra

2

*使用此方法,您可以检查SD卡中是否存在文件*

File file = new File(sdcardpath+ "/" + filename);
if (file.exists())
 {

}

2

0

使用布尔类型检查 IF 条件,例如:

File file = new File(path+filename);
if (file.exists() == true)
{
//Do something
}

1
上面代码中的“== true”是冗余的。你可以使用if (file.exists())来代替。 - Slander

0
你需要创建一个文件,并将其设置为所需的文件,然后检查它是否存在。
String FILENAME="mytextfile.txt";
File fileToCheck = new File(getExternalCacheDirectory(), FILENAME);
if (fileToCheck.exists()) {
FileOutputStream fos = openFileOutput("sdcard/mytextfile.txt", MODE_WORLD_WRITEABLE);
}

玩得开心!


最好不要使用SD卡的硬编码引用,可以参考我之前的答案,找到更好的访问外部存储的方式。 - Ljdawson

0

FileOutputStream 构造函数会在指定的文件不存在时抛出 FileNotFound 异常。请参阅 Oracle 文档 以获取更多信息。

此外,请确保您有权限 访问 SD 卡


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