Dlaczego musimy sprawdzać, czy plik „istnieje”?
Mając do czynienia z operacjami na plikach (odczyt/zapis/tworzenie/usuwanie/aktualizacja itp.), wielu początkujących może się zastanawiać, dlaczego w ogóle musimy sprawdzać, czy plik istnieje? Właściwą odpowiedzią na to byłoby, aby uniknąć NoSuchFileException , zawsze jest to bezpieczniejszy sposób na dostęp do pliku. W związku z tym należy sprawdzić, czy plik istnieje przed uzyskaniem do niego dostępu, aby uniknąć wyjątków w czasie wykonywania.
Jak sprawdzić metodą file.exists()?
Java udostępnia prostą metodę logiczną, file.exists() , która nie wymaga żadnych parametrów do sprawdzenia odpowiedniego pliku w danej ścieżce. Podczas sprawdzania istnienia pliku weź pod uwagę 3 scenariusze.- Plik został znaleziony.
- Plik nie został znaleziony.
- Stan pliku jest nieznany, jeśli nie udzielono uprawnień (ze względów bezpieczeństwa).
Przykład
Przyjrzyjmy się prostemu przykładowi kodu, aby zobaczyć implementację.
package com.java.exists;
import java.io.File;
public class ExistsMethodInJava {
public static void main(String[] args) {
String filePath = "C:\\Users\\Lubaina\\Documents\\myNewTestFile.txt";
File file = new File(filePath);
// check if the file exists at the file path
System.out.println("Does File exists at \"" + filePath + "\"?\t" + file.exists());
filePath = "C:\\Users\\Lubaina\\Documents\\myOtherTestFile.txt";
File nextFile = new File(filePath);
// check if the file exists at the file path
System.out.println("Does File exists at \"" + filePath + "\"?\t" + nextFile.exists());
}
}
Wyjście
Czy plik istnieje w „C:\Users\Lubaina\Documents\myNewTestFile.txt”? true
Czy plik istnieje w „C:\Users\Lubaina\Documents\myOtherTestFile.txt”? FAŁSZ
Należy pamiętać, że metoda file.exists() działa również dla ścieżek „ katalogowych ”. Jeśli sprawdzisz prawidłową ścieżkę katalogu za pomocą tej metody, zwróci ona wartość true lub false w przeciwnym razie. Dla lepszego zrozumienia możesz rzucić okiem na następujący blok kodu.
package com.java.exists;
import java.io.File;
public class CheckFileExists {
// check if the "file" resource exists and not "directory"
public static boolean checkFileExists(File file) {
return file.exists() && !file.isDirectory();
}
public static void main(String[] args) {
String directoryPath = "C:\\Users\\Lubaina\\Documents\\javaContent";
File direcotry = new File(directoryPath);
// check if the directory exists at the dir path
if (direcotry.exists()) {
System.out.println("Direcotry at \"" + directoryPath + "\" exists.\n");
} else {
System.out.println("Direcotry at \"" + directoryPath + "\" does not exist.\n");
}
// check if the resource present at the path is a "file" not "directory"
boolean check = checkFileExists(direcotry);
System.out.println("Is the resource \"" + direcotry + "\" a File? " + check);
String filePath = "C:\\Users\\Lubaina\\Documents\\myNewTestFile.txt";
File file = new File(filePath);
check = checkFileExists(file);
System.out.println("Is the resource \"" + file + "\" a File? " + check);
}
}
Wyjście
Istnieje katalog „C:\Users\Lubaina\Documents\javaContent”.
Czy zasób „C:\Users\Lubaina\Documents\javaContent” jest plikiem? false
Czy zasób „C:\Users\Lubaina\Documents\myNewTestFile.txt” jest plikiem? PRAWDA
Jak widać z danych wyjściowych, katalog o nazwie „javaContent” został zweryfikowany za pomocą metody ist() . Jeśli więc chcesz sprawdzić, czy plik nie jest katalogiem, możesz użyć metody boolowskiej isDirectory() udostępnianej przez klasę File w Javie.
Wniosek
Do końca tego wpisu musisz wiedzieć, jak sprawdzić, czy plik istnieje w Javie. Możesz napisać własne programy, aby przetestować i zrozumieć tę funkcjonalność. Gdy już się z tym oswoisz, możesz także zbadać inne sposoby sprawdzania obecności pliku (np. przy użyciu dowiązań symbolicznych lub klasy nio). Powodzenia i szczęśliwego kodowania! :)
Więcej czytania: |
---|
GO TO FULL VERSION