Android; 检查文件是否存在而不创建新文件


227

我想检查文件是否在我的包文件夹中,但是我不想创建一个新文件。

File file = new File(filePath);
if(file.exists()) 
     return true;

是否在不创建新文件的情况下检查此代码?



1
@Kunok我正在检查您的编辑评论:删除了诸如坦克之类的字眼……:P
Kevin Guan

1
@KevinGuan哦,是的,我不好,刚从新年前夜聚会回家,所以我无法正确书写:)
Kunok 2016年

Answers:


440

您的代码块不会创建新的代码,只会检查它是否已经存在,而不会检查其他任何东西。

File file = new File(filePath);
if(file.exists())      
//Do something
else
// Do something else.

5
不知道为什么在我的情况下此代码创建了一个新文件。
ofnowhere 2014年

怎么也检查子文件夹?
Pratik Butani 2014年

4
之所以这样,是因为没有静态方法:File.exists(String file),因此您必须实例化一个新的File对象才能访问“ Exists”方法。
Giova 2014年

3
我认为OP不想创建新的文件对象。
AndroDev '16

1
@AndroDev否-他不希望创建新的文件,答案将创建对文件的新引用。
玛丽安(MarianPaździoch)

31

使用此代码时,您并没有在创建新文件,而只是为该文件创建对象引用并测试该文件是否存在。

File file = new File(filePath);
if(file.exists()) 
    //do something

21

它为我工作:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }

2
如果您只有文件名而不是文件路径,这就是解决方案
Zach

1
@Zach不是,它的路径将是我发送的第一个参数(getApplicationContext()。getFilesDir())
Jordi Vicens

8

当您说“在您的包裹文件夹中”时,您的意思是本地应用程序文件吗?如果是这样,您可以使用Context.fileList()方法获取它们的列表。只是遍历并查找您的文件。假设您使用Context.openFileOutput()保存了原始文件。

示例代码(在“活动”中):

public void onCreate(...) {
    super.onCreate(...);
    String[] files = fileList();
    for (String file : files) {
        if (file.equals(myFileName)) {
            //file exits
        }
    }
}

5

methods在Path类的语法,这意味着它们的路径实例进行操作。但是最终您必须访问file系统以验证特定路径是否存在

 File file = new File("FileName");
 if(file.exists()){
 System.out.println("file is already there");
 }else{
 System.out.println("Not find file ");
 }

1
public boolean FileExists(String fname) {
        File file = getBaseContext().getFileStreamPath(fname);
        return file.exists();
}

0

Kotlin扩展属性

制作File对象时,不会创建任何文件,它只是一个接口。

为了使处理文件更容易,.toFileUri上已有一个功能

您还可以在File和/或Uri上添加扩展属性,以进一步简化用法。

val File?.exists get() = this?.exists() ?: false
val Uri?.exists get() = File(this.toString).exists()

然后使用uri.existsfile.exists检查。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.