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.