2013-04-12 27 views
30

Ho un file di testo per esempio. Qual è il modo migliore per controllare in Ruby che un file è vuoto? File.size('test.rb') == 0 sembra brutto.Come verificare che un file sia vuoto?

+1

http : //stackoverflow.com/questions/2615884/optimized-way-of-getting-the-size-of-a-response-in-ruby –

+2

IMHO quella sintassi afferma esplicitamente l'intensione del codice, che è una buona cosa. – fmendez

risposta

46

è possibile utilizzare il metodo zero?:

File.zero?("test.rb") 
+0

Meno dettagliato della mia versione. – leemour

2

Il modo migliore potrebbe essere quella di non controllare a tutti, ma iterare su ogni linea e fare le cose per ogni iterazione. 0 righe = 0 iterazioni = nessun codice aggiuntivo necessario.

2

File.size?('test.rb') restituisce nil se il file è vuoto or non esiste. File.zero?('test.rb') restituirà false se il file è vuoto, ma restituirà anche false se il file non viene trovato. A seconda delle tue esigenze particolari dovresti stare attento a usare il metodo corretto.

Come esempio nella domanda del creatore dell'argomento hanno chiesto espressamente "Qual è il modo migliore per verificare in Ruby che un file è vuoto?" La risposta accettata esegue correttamente e genera un messaggio di errore No such file or directory se il file non esiste.

In alcune situazioni, è possibile che la mancanza di un file sia "equivalente" a un file vuoto.

0

A partire da Ruby 2.4.0, c'è File.empty?.

(Si noti che restituisce sempre false se si passa una directory, se tale directory è vuota o non:.. File.empty?('/') # => false Quindi usa Dir.empty? per che, invece, o Pathname#empty? che funziona sia per i file e le directory)

Problemi correlati