Waarom moeten we controleren of een bestand "bestaat?"

Bij het omgaan met bestandsbewerkingen (lezen/schrijven/aanmaken/verwijderen/bijwerken enz.), kunnen veel nieuwkomers zich afvragen waarom we überhaupt moeten controleren of een bestand bestaat? Het juiste antwoord hierop zou zijn, om NoSuchFileException te vermijden , het is altijd een veiligere manier om toegang te krijgen tot een bestand. Daarom moet u controleren of een bestand bestaat voordat u het opent om runtime-uitzonderingen te voorkomen.Controleren of een bestand bestaat in Java - 1

Hoe te controleren met behulp van de methode file.exists()?

Java biedt een eenvoudige booleaanse methode, file.exists() die geen parameters vereist om het relevante bestand op een bepaald pad te controleren. Houd bij het controleren op het bestaan ​​van een bestand rekening met 3 scenario's.
  • Het bestand is gevonden.
  • Het bestand is niet gevonden.
  • De bestandsstatus is onbekend als er geen machtigingen zijn verleend (vanwege veiligheidsredenen).
De methode File.exists() retourneert “ true ” als het bestand is gevonden. In het geval dat het niet wordt gevonden of de toegang is mislukt, retourneert het " false ".

Voorbeeld

Laten we eens kijken naar een eenvoudig codevoorbeeld om de implementatie te zien.

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());
	}
}
Uitgang
Bestaat het bestand in "C:\Users\Lubaina\Documents\myNewTestFile.txt"? true Bestaat het bestand in "C:\Users\Lubaina\Documents\myOtherTestFile.txt"? vals
Houd er rekening mee dat de methode file.exists() ook werkt voor " directory "-paden. Als u met deze methode een geldig directorypad controleert, retourneert het waar of anders onwaar. Voor een beter begrip kunt u het volgende codeblok bekijken.

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);
	}
}
Uitgang
Directory op "C:\Users\Lubaina\Documents\javaContent" bestaat. Is de bron "C:\Users\Lubaina\Documents\javaContent" een bestand? false Is de bron "C:\Users\Lubaina\Documents\myNewTestFile.txt" een bestand? WAAR
Zoals je kunt zien aan de uitvoer, is de map met de naam "javaContent" gevalideerd door de methode comes() . Dus als u specifiek wilt controleren of een bestand geen map is, kunt u de Booleaanse methode isDirectory() gebruiken die wordt geleverd door de klasse File in Java.

Conclusie

Aan het einde van dit bericht moet u bekend zijn met hoe u kunt controleren of een bestand in Java bestaat. U kunt uw eigen programma's schrijven om deze functionaliteit te testen en te begrijpen. Als u er eenmaal vertrouwd mee bent, kunt u ook andere manieren verkennen om de aanwezigheid van een bestand te controleren (bijvoorbeeld door symbolische koppelingen of nio-klasse te gebruiken). Veel succes en plezier met coderen! :)