2012-04-23 22 views

risposta

14
File file = new File("file_path"); 
System.out.println(file.length()); 
+2

Una soluzione complicata poiché Java 7 utilizza la classe java.nio.Files. Quindi, è possibile eseguire lo stesso in una riga. Ad esempio: 'System.out.println (Files.size (Percorsi.get ("file_path"))); ' –

+0

Non per i file Unicode (vedi risposta in messaggio duplicato per i dettagli). –

1
BufferedReader br = new BufferedReader(new FileReader("your_location"));  
if (br.readLine()) == null) { 
    System.out.println("No errors, and file empty"); 
} 

vedere Most efficient way to check if a file is empty in Java on Windows

+0

@ sans481 il post collegato praticamente enumera ogni metodo noto all'uomo. Molti di questi metodi generalmente funzionano e sono corretti, solo l'OP aveva un problema molto specifico: un file che era in realtà ** non vuoto ** (aveva un BOM a due byte) doveva essere considerato come vuoto. –

+0

Ora ho capito chiaramente la tua opinione. Sì, è davvero un disastro leggere un'intera riga solo per dire se un file è vuoto o meno. La situazione peggiora se la prima linea è enorme. Grazie! – sgowd

0

Secondo javadoc J2RE: http://docs.oracle.com/javase/7/docs/api/java/io/File.html#length()

public long length() 
    Returns the length of the file denoted by this abstract pathname. The return value is  unspecified if this pathname denotes a directory. 

Così new File("path to your file").length() > 0 dovrebbe fare il trucco. Ci scusiamo per la precedente risposta bd. :(

12
File file = new File(path); 

boolean empty = !file.exists() || file.length() == 0; 

che può abbreviato in:

boolean empty = file.length() == 0; 

poiché secondo documentazione metodo restituisce

La lunghezza in byte del file indicato con questo percorso astratto, o 0L se il file non esiste

+0

Hey @ Jack, penso che dovrebbe essere piuttosto la mia risposta qui sotto. Correggimi se sbaglio – TechSpellBound

+1

Dipende dal motivo per cui è necessario verificare se un file è vuoto. Potrebbe essere necessario prendere in considerazione un file inesistente come vuoto o no. Quindi la tua risposta potrebbe essere corretta come la mia, non piuttosto. – Jack

+0

Ma credo che anche in quel caso, se il file non esiste, non dobbiamo controllare se è vuoto o no. Quindi, per un file non esistente, la mia risposta salva una chiamata a file.length(). Minori miglioramenti in termini di efficienza, ma ritengo sia logico. Perfavore, correggimi se sbaglio. – TechSpellBound

0
 File file = new File("path.txt"); 
     if (file.exists()) { 
      FileReader fr = new FileReader(file); 
      if (fr.read() == -1) { 
       System.out.println("EMPTY"); 
      } else { 
       System.out.println("NOT EMPTY"); 
      } 
     } else { 
      System.out.println("DOES NOT EXISTS"); 
     } 
1
File file = new File(path); 

boolean empty = file.exists() && file.length() == 0; 

voglio sottolineare che, se vogliamo controllare se il file è vuoto, allora dobbiamo considerare che esiste.

Problemi correlati