Varför måste vi kontrollera om en fil "finns?"

Medan de hanterar filoperationer (läsa/skriva/skapa/ta bort/uppdatera etc), kan många nybörjare undra varför vi ens behöver kontrollera om en fil finns? Det lämpliga svaret på detta skulle vara, för att undvika NoSuchFileException , det är alltid ett säkrare sätt att komma åt en fil. Följaktligen måste du kontrollera om en fil existerar innan du får åtkomst till den för att undvika körtidsundantag.Hur man kontrollerar om en fil finns i Java - 1

Hur kontrollerar jag med metoden file.exists()?

Java tillhandahåller en enkel boolesk metod, file.exists() som inte kräver några parametrar för att kontrollera den relevanta filen på en given sökväg. När du kontrollerar om det finns en fil, håll tre scenarier under övervägande.
  • Filen hittas.
  • Filen hittades inte.
  • Filstatusen är okänd om behörigheter inte beviljas (på grund av säkerhetsskäl).
Metoden File.exists() returnerar " true " om filen hittas. Om den inte hittas eller den misslyckade åtkomsten, returnerar den " false ".

Exempel

Låt oss ta en titt på ett enkelt kodexempel för att se implementeringen.

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());
	}
}
Produktion
Finns filen på "C:\Users\Lubaina\Documents\myNewTestFile.txt"? true Finns filen på "C:\Users\Lubaina\Documents\myOtherTestFile.txt"? falsk
Observera att metoden file.exists() också fungerar för " katalog "-sökvägar. Om du kontrollerar en giltig katalogsökväg med den här metoden kommer den att returnera true eller falskt på annat sätt. För en bättre förståelse kan du ta en titt på följande kodblock.

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);
	}
}
Produktion
Katalogen på "C:\Users\Lubaina\Documents\javaContent" finns. Är resursen "C:\Users\Lubaina\Documents\javaContent" en fil? false Är resursen "C:\Users\Lubaina\Documents\myNewTestFile.txt" en fil? Sann
Som du kan se från utgången har katalogen med namnet "javaContent" validerats med exists() -metoden. Så om du specifikt vill kontrollera att en fil inte är en katalog, kan du använda den booleska metoden isDirectory() som tillhandahålls av klassen File i Java.

Slutsats

I slutet av detta inlägg måste du vara bekant med hur du kontrollerar om en fil finns i Java. Du kan skriva dina egna program för att testa och förstå denna funktionalitet. När du väl är bekväm med det kan du också utforska andra sätt att kontrollera närvaron av en fil (t.ex. genom att använda symboliska länkar eller nio-klass). Lycka till och lycklig kodning! :)

Mer läsning: