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
Не знаю, чому в моєму випадку цей код створює новий файл.
— ofnowhere

Як перевірити також і в підпапку?
— Пратік Бутані

4
Це так, тому що не існує статичного методу: File.exists (файл String), тому вам доведеться інстанціювати новий файл-об'єкт, щоб отримати доступ до методу "існує".
— Джова

3
Я думаю, що ОП не бажає створювати новий об’єкт файлу.
— 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 ())
— Jordi

8

Коли ви говорите "в папці пакунків", ви маєте на увазі ваші локальні файли додатків? Якщо так, ви можете отримати їх список за допомогою методу Context.fileList () . Просто перегляньте і шукайте свій файл. Це припускаючи, що ви зберегли початковий файл з Context.openFileOutput () .

Приклад коду (у діяльності):

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

5

Клас methodsPath є синтаксичним, це означає, що вони працюють на екземплярі 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.