Android; Проверьте, существует ли файл, не создавая новый


227

Я хочу проверить, существует ли файл в папке с моим пакетом, но я не хочу создавать новый.

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

Этот код проверяет без создания нового файла?


возможный дубликат теста, если файл существует
piokuc

1
@Kunok Я проверяю ваш комментарий для редактирования: удалены такие слова, как танки, как они есть ... : P
Кевин Гуан

1
@KevinGuan О, да, мой плохой, только что вернулся домой с новой вечеринки, так что я не смог написать правильно :)
Kunok

Ответы:


440

Ваш кусок кода не создает новый, он только проверяет, есть ли он там и ничего больше.

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

5
Не знаю, почему в моем случае этот код создает новый файл.
нигде

Как проверить в подпапке также?
Пратик Бутани

4
Это так, потому что нет статического метода: File.exists (String file), поэтому вы должны создать новый объект File для доступа к методу Exists.
Джова

3
Я думаю, что OP не хочет создавать новый объект файла.
AndroDev

1
@AndroDev нет - он не хочет создавать новый файл, ответ создает новую ссылку на файл.
Marian Paź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
Это решение, если у вас есть только имя файла, а не его путь
Зак

1
@Zach Не совсем, это путь будет первым параметром, который я отправил (getApplicationContext (). GetFilesDir ())
Джорди Висенс,

8

Когда вы говорите «в папке вашего пакета», вы имеете в виду локальные файлы приложения? Если это так, вы можете получить их список, используя метод Context.fileList () . Просто переберите и найдите свой файл. Это при условии, что вы сохранили исходный файл с помощью Context.openFileOutput () .

Пример кода (в Деятельности):

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

5

Класс methodsin Path является синтаксическим, что означает, что они работают с экземпляром 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, файл не будет создан, это всего лишь интерфейс.

Для упрощения работы с файлами .toFileв Uri существует функция

Вы также можете добавить свойство расширения в File и / или Uri, чтобы еще больше упростить использование.

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

Тогда просто используйте uri.exists или, file.existsчтобы проверить.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.