HOWTO · Java

Verificar se existe um ficheiro em Java

Este tutorial passa por alguns métodos para verificar se um ficheiro existe em Java

Este artigo analisará algumas formas simples em Java para verificar se um ficheiro existe. Utilizaremos diferentes pacotes e classes quando quisermos saber se o ficheiro especificado existe.

Utilize java.io.File para verificar se um ficheiro existe em Java

O próprio pacote E/S de Java java.io.File tem o método exists() para verificar se o ficheiro especificado existe. Esta função retorna boolean, o que significa que podemos colocá-lo numa declaração condicional.

Mas há um problema em utilizar apenas o método exists(), uma vez que também pode retornar true se especificarmos acidentalmente um directório. É por isso que também utilizaremos !file.isDirectory() para garantir que o argumento dado é um ficheiro mas não um directório.

import java.io.File;

public class Main {
  public static void main(String[] args) {
    File file1 = new File("sampleFile.txt");
    File file2 = new File("xyz.txt");

    // Checks if file1 exists
    if (file1.exists() && !file1.isDirectory()) {
      System.out.println(file1 + " Exists");
    } else {
      System.out.println(file1 + " Does not exists");
    }

    // Checks if file2 exists
    if (file2.exists()) {
      System.out.println(file2 + " Exists");
    } else {
      System.out.println(file2 + " Does not exists");
    }
  }
}

Resultado:

sampleFile.txt Exists xyz.txt Does not exists

Utilize isFile() para verificar se o ficheiro existe em Java

O método seguinte para verificar se o ficheiro especificado existe é utilizar a função isFile() do mesmo pacote java.io.File que utilizámos no exemplo anterior.

A vantagem de utilizar isFile() sobre exists() é que não temos de verificar se o ficheiro especificado é um directório ou não. Como o nome da função indica, apenas verifica se se trata ou não de um ficheiro.

import java.io.File;

public class Main {
  public static void main(String[] args) {
    File file = new File("sampleFile.txt");
    File directory = new File("E:/Work/java");

    if (file.isFile()) {
      System.out.println(file + " Exists");
    } else {
      System.out.println(file + " Do not Exist or it is a directory");
    }

    if (directory.isFile()) {
      System.out.println(directory + " Exists");
    } else {
      System.out.println(directory + " Do not Exist or it is a directory");
    }
  }
}

Resultado:

sampleFile.txt Exists E :\Work\java Do not Exist or it is a directory

Podemos ver que se um directório existente é dado como argumento para a função isFile(), ele retorna false.

Utilize Path.isFile() Com isFile() para verificar se o ficheiro existe ou não

Outro pacote Java java.nio.file fornece-nos métodos úteis como toFile() e Paths. Podemos obter o path utilizando Paths.get() e depois convertê-lo para ficheiro utilizando toFile.

Finalmente, podemos trazer de volta o método que utilizámos no último exemplo, isFile(), e combiná-lo para verificar se o ficheiro existe.

import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
  public static void main(String[] args) {
    Path path = Paths.get("sampleFile.txt");

    if (path.toFile().isFile()) {
      System.out.println(path + " Exists");
    } else {
      System.out.println(path + " Do not Exists");
    }
  }
}

Resultado:

sampleFile.txt Exists