write - open file java




Come posso verificare se un file esiste in Java? (14)

Se si desidera verificare un File in una directory dir

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

e controlla il risultato del check

Come posso verificare se esiste un file, prima di aprirlo per la lettura in Java? (equivalente di Perl -e $filename ).

L'unica domanda simile su SO riguarda la scrittura del file ed è stato quindi risposto utilizzando FileWriter che ovviamente non è applicabile qui.

Se possibile, preferirei una vera chiamata API che restituisce true / false al posto di alcune "API di chiamata per aprire un file e catturare quando genera un'eccezione che controlli 'nessun file' nel testo", ma posso convivere con quest'ultimo.


È possibile utilizzare il seguente codice per verificare:

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;
        }
    }
}


Ci sono molti modi per ottenere questo.

  1. In caso di solo per esistenza. Potrebbe essere un file o una directory.

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

    File f = new File("/path/to/file"); 
      if(f.exists() && f.isFile()) {}
    
  3. Controlla la directory.

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

    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
    

Non farlo. Basta prendere l' FileNotFoundException. Il file system deve verificare se il file esiste comunque. Non ha senso fare tutto questo due volte e diverse ragioni per non farlo, come ad esempio:

  • raddoppia il codice
  • il problema della finestra di temporizzazione in base al quale il file potrebbe esistere quando si esegue il test ma non quando si apre, o viceversa, e
  • il fatto che, come dimostra l'esistenza di questa domanda, potresti fare il test sbagliato e ottenere la risposta sbagliata.

Non cercare di indovinare il sistema. Lo sa. E non cercare di prevedere il futuro. In generale, il modo migliore per verificare se una risorsa è disponibile è solo cercare di usarlo.


Non utilizzare il costruttore di file con String.
Questo potrebbe non funzionare!
Invece di usare l'URI:

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


Puoi farlo in questo modo

import java.nio.file.Paths;

String file = "myfile.sss";
if(Paths.get(file).toFile().isFile()){
    //...do somethinh
}

Usando nio in 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 entrambi esistono e non esiste restituiscono false, non è possibile verificare l'esistenza del file. (forse nessun diritto di accesso a questo percorso)

È possibile verificare se il percorso è directory o file regolari.

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

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

Si prega di controllare questo tutorial di Java SE 7 .


Utilizzando java.io.File :

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


primo hit per "file java esiste" su 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 "));
    }
}

File f = new File(filePathString); 

Questo non creerà un file fisico. Creerà solo un oggetto del file di classe. Per creare fisicamente un file devi crearlo esplicitamente:

f.createNewFile();

Quindi f.exists() può essere usato per verificare se tale file esiste o meno.


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




io