Como faço para verificar se existe um arquivo em Java?

Como posso verificar se existe um arquivo antes de abri-lo para leitura em Java? (equivalente ao -e $filename do Perl).

A única questão semelhante sobre o SO lida com a gravação do arquivo e foi, portanto, respondida usando o FileWriter, que obviamente não é aplicável aqui.

Se possível eu prefiro uma chamada real da API retornando true / false ao invés de alguma “API de Chamadas para abrir um arquivo e capturar quando ele lança uma exceção que você verifica por ‘no file’ no texto”, mas eu posso viver com o último.

Usando java.io.File :

 File f = new File(filePathString); if(f.exists() && !f.isDirectory()) { // do something } 

Eu recomendaria usar isFile() vez de exists() . Na maioria das vezes você está olhando para verificar se o caminho aponta para um arquivo e não apenas que ele existe. Lembre-se de que exists() retornará true se seu caminho apontar para um diretório.

 new File("path/to/file.txt").isFile(); 

new File("C:/").exists() retornará verdadeiro, mas não permitirá que você abra e leia como um arquivo.

Usando o nio no Java SE 7,

 import java.nio.file.*; Path path = Paths.get(filePathString); if (Files.exists(path)) { // file exist } if (Files.notExists(path)) { // file is not exist } 

Se ambos existirem e nãoExists retornar false, a existência do arquivo não poderá ser verificada. (talvez sem access direto a esse caminho)

Você pode verificar se o caminho é diretório ou arquivo regular.

 if (Files.isDirectory(path)) { // path is directory } if (Files.isRegularFile(path)) { // path is regular file } 

Por favor, verifique este tutorial do Java SE 7 .

Usando o Java 8:

 if(Files.exists(Paths.get(filePathString))) { // do something } 
 File f = new File(filePathString); 

Isso não criará um arquivo físico. Apenas criará um object da class Arquivo. Para criar fisicamente um arquivo, você deve criá-lo explicitamente:

 f.createNewFile(); 

Então f.exists() pode ser usado para verificar se tal arquivo existe ou não.

 f.isFile() && f.canRead() 

primeiro hit para “arquivo java existe” no google:

 import java.io.*; public class FileTest { public static void main(String args[]) { File f = new File(args[0]); System.out.println(f + (f.exists()? " is found " : " is missing ")); } } 

Você pode usar o seguinte: File.exists()

Não faça Apenas pegue o FileNotFoundException. O sistema de arquivos precisa testar se o arquivo existe mesmo assim. Não faz sentido fazer tudo isso duas vezes, e várias razões para não fazê-lo, como:

  • dobrar o código
  • o problema da janela de tempo em que o arquivo pode existir quando você testa, mas não quando você abre, ou vice-versa, e
  • o fato de que, como a existência dessa questão mostra, você pode fazer o teste errado e obter a resposta errada.

Não tente adivinhar o sistema. Sabe. E não tente prever o futuro. Em geral, a melhor maneira de testar se algum recurso está disponível é apenas tentar usá-lo.

Para mim, uma combinação da resposta aceita por Sean AO Harney e o comentário resultante por Cort3z parece ser a melhor solução.

Usou o seguinte snippet:

 File f = new File(filePathString); if(f.exists() && f.isFile()) { //do something ... } 

Espero que isso possa ajudar alguém.

Existem várias maneiras de conseguir isso.

  1. Em caso de apenas por existência. Pode ser um arquivo ou um diretório.

     new File("/path/to/file").exists(); 
  2. Verifique o arquivo

     File f = new File("/path/to/file"); if(f.exists() && f.isFile()) {} 
  3. Verifique o diretório.

     File f = new File("/path/to/file"); if(f.exists() && f.isDirectory()) {} 
  4. Java 7 caminho.

     Path path = Paths.get("/path/to/file"); Files.exists(path) // Existence Files.isDirectory(path) // is Directory Files.isRegularFile(path) // Regular file Files.isSymbolicLink(path) // Symbolic Link 

Também vale a pena se familiarizar com o Commons FileUtils http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html Isso tem methods adicionais para o gerenciamento de arquivos e geralmente melhor do que o JDK.

Eu sei que estou um pouco atrasado neste tópico. No entanto, aqui está minha resposta, válida desde o Java 7 e acima.

O trecho a seguir

 if(Files.isRegularFile(Paths.get(pathToFile))) { // do something } 

é perfeitamente satifactory, porque o método isRegularFile retorna false se o arquivo não existir. Portanto, não há necessidade de verificar se o Files.exists(...) .

Observe que outros parâmetros são opções que indicam como os links devem ser manipulados. Por padrão, os links simbólicos são seguidos.

Da documentação do Oracle Java

Se você quiser verificar um File em um diretório dir

 String directoryPath = dir.getAbsolutePath() boolean check = new File(new File(directoryPath), aFile.getName()).exists(); 

e verifique o resultado da check

 new File("/path/to/file").exists(); 

vai fazer o truque

Não use construtor de arquivo com String.
Isso pode não funcionar!
Em vez disso, use o URI:

 File f = new File(new URI("file:///"+filePathString.replace('\\', '/'))); if(f.exists() && !f.isDirectory()) { // to do } 

File.exists() para verificar se existe um arquivo, ele retornará um valor booleano para indicar o status da operação de verificação; true se o arquivo existir; false se não existir.

 File f = new File("c:\\test.txt"); if(f.exists()){ System.out.println("File existed"); }else{ System.out.println("File not found!"); } 

Por exemplo, se você tiver um diretório de arquivos e quiser verificar se ele existe

 File tmpDir = new File("/var/tmp"); boolean exists = tmpDir.exists(); 

exists retornará false se o arquivo não existir

fonte: https://alvinalexander.com/java/java-file-exists-directory-exists

Você pode usar o seguinte código para verificar:

 import java.io.File; class Test{ public static void main(String[] args){ File f = new File(args[0]); //file name will be entered by user at runtime System.out.println(f.exists()); //will print "true" if the file name given by user exists, false otherwise if(f.exists()) { //executable code; } } } 

Para verificar se existe um arquivo, apenas importe a biblioteca java.io. *

 File f = new File(“C:\\File Path”); if(f.exists()){ System.out.println(“Exists”); //if file exists }else{ System.out.println(“Doesn't exist”); //if file doesn't exist } 

Fonte: http://newsdivariotipo.altervista.org/java-come-controllare-se-un-file-esiste/