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?

MBH
źródło
możliwy duplikat testu, jeśli plik istnieje
piokuc
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.
Maikel Bollemeijer
źródło
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
Victor Laerte
źródło
21

To działało dla mnie:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }
Jordi Vicens
źródło
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
        }
    }
}
thomas88wp
źródło
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 ");
 }
Anand Dwivedi
źródło
1
public boolean FileExists(String fname) {
        File file = getBaseContext().getFileStreamPath(fname);
        return file.exists();
}
HomieZ2
źródło
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ć.

Gibolt
źródło