Android; Sprawdź, czy plik istnieje bez tworzenia nowego


227

Chcę sprawdzić, czy plik istnieje w folderze mojego pakietu, ale nie chcę tworzyć nowego.

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

Czy ten kod sprawdza się bez tworzenia nowego pliku?



1
@Kunok Sprawdzam twój komentarz do edycji: usunąłem słowa takie jak czołgi, ponieważ są ... : P
— Kevin Guan

1
@KevinGuan O tak, mój zły, właśnie wróciłem do domu z nowej imprezy
— wigilijnej,

Odpowiedzi:


440

Twój fragment kodu nie tworzy nowego, sprawdza tylko, czy już tam jest i nic więcej.

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

5
Nie wiem, dlaczego w moim przypadku ten kod tworzy nowy plik.
— wiadomo

Jak również sprawdzić w podfolderze?
— Pratik Butani

4
Dzieje się tak dlatego, że nie ma metody statycznej: File.exists (plik String), więc musisz utworzyć nowy obiekt File, aby uzyskać dostęp do metody „Exists”.
— Giova

3
Myślę, że OP nie chce tworzyć nowego obiektu pliku.
— AndroDev,

1
@AndroDev nie - nie chce tworzyć nowego PLIKU, odpowiedź tworzy nowe ODNIESIENIE do pliku.
— Marian Paździoch

31

Kiedy używasz tego kodu, nie tworzysz nowego pliku, po prostu tworzymy odwołanie do obiektu dla tego pliku i testujemy, czy istnieje.

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

21

To działało dla mnie:

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

2
Jest to rozwiązanie, jeśli masz tylko nazwę pliku, a nie jego ścieżkę
— Zach.

1
@Zach Nie bardzo, to ścieżka byłaby pierwszym parametrem, który wysłałem (getApplicationContext (). GetFilesDir ())
— Jordi Vicens,

8

Kiedy mówisz „w swoim folderze pakietu”, masz na myśli lokalne pliki aplikacji? Jeśli tak, możesz uzyskać ich listę za pomocą metody Context.fileList () . Po prostu iteruj i poszukaj swojego pliku. Zakłada się, że zapisałeś oryginalny plik za pomocą Context.openFileOutput () .

Przykładowy kod (w działaniu):

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

5

methodsW klasie ścieżce składniowym, co oznacza, że działają one na przykład Path. Ale ostatecznie musisz uzyskać dostęp do filesystemu, aby sprawdzić, czy istnieje konkretna Ścieżka

 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

Właściwości rozszerzenia Kotlin

Po utworzeniu obiektu File nie zostanie utworzony żaden plik, jest to tylko interfejs.

Aby ułatwić pracę z plikami, .toFilew Uri istnieje istniejąca funkcja

Możesz także dodać właściwość rozszerzenia do pliku i / lub Uri, aby jeszcze bardziej uprościć korzystanie.

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

Następnie użyj uri.existslub, file.existsaby sprawdzić.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.