2013-04-26 13 views
169

Chcę sprawdzić, czy plik istnieje w moim folderze pakietu, ale nie chcę tworzyć nowego.Android; Sprawdź, czy plik istnieje bez tworzenia nowego

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

Czy ten kod sprawdza się bez tworzenia nowego pliku?

+2

Wydaje poprawne. –

+0

możliwy duplikat [Test jeśli plik istnieje] (http://stackoverflow.com/questions/2786655/test-if-file-istnieje) – piokuc

+1

@Kunok Sprawdzam twój komentarz do edycji: * usunięto słowa, takie jak ** zbiorniki **, ponieważ są ... *: P –

Odpowiedz

316

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

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

Nie wiem dlaczego w moim przypadku ten kod tworzy nowy plik . – ofnowhere

+0

Jak sprawdzić także w podfolderze? –

+4

To jest tak, ponieważ nie ma metody statycznej: File.exists (plik String), więc musisz zainicjować nowy obiekt File, aby uzyskać dostęp do metody "Exists". – Giova

20

Podczas korzystania z tego kodu, nie jest tworzony nowy plik, to po prostu tworzenie odniesienie do obiektu dla tego pliku i testowanie jeśli istnieje, czy nie.

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

Kiedy mówisz "w twoim folderze pakietowym", masz na myśli lokalne pliki aplikacji? Jeśli tak, możesz uzyskać ich listę przy użyciu metody Context.fileList(). Po prostu przejrzyj i szukaj pliku. To zakłada, że ​​zapisałeś oryginalny plik przy pomocy Context.openFileOutput().

Kod próbki (w działaniu)

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

methods w klasie konturu są składniowym, co oznacza, że ​​działają one na przykład ścieżce. Ale w końcu trzeba uzyskać dostęp do systemu z file aby sprawdzić, czy dana ścieżka istnieje

File file = new File("FileName"); 
if(file.exists()){ 
System.out.println("file is already there"); 
}else{ 
System.out.println("Not find file "); 
} 
3

on pracował dla mnie:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt"); 
    if(file.exists()){ 
     //Do something 
    } 
    else{ 
     //Nothing 
    } 
0
public boolean FileExists(String fname) { 
     File file = getBaseContext().getFileStreamPath(fname); 
     return file.exists(); 
} 
Powiązane problemy