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.