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.