2013-04-12 3 views
30

Ich habe eine Textdatei zum Beispiel. Was ist der beste Weg um Ruby einzusehen, dass eine Datei leer ist? File.size('test.rb') == 0 sieht hässlich aus.Wie überprüft man, dass eine Datei leer ist?

+1

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

+2

IMHO, dass Syntax explizit die Intension des Codes angibt, was eine gute Sache ist. – fmendez

Antwort

46

Sie könnten die zero? Methode verwenden:

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

Weniger ausführlich als meine Version. – leemour

2

Der beste Weg sein kann, gar nicht zu prüfen, aber über jede Zeile durchlaufen und für jede Iteration Sachen zu tun. 0 Zeilen = 0 Iterationen = kein zusätzlicher Code erforderlich.

2

File.size?('test.rb') wertet nil aus, wenn die Datei leer ist or es existiert nicht. File.zero?('test.rb') wird false zurückgeben, wenn die Datei leer ist, aber sie gibt auch false zurück, wenn die Datei nicht gefunden wird. Abhängig von Ihren speziellen Bedürfnissen sollten Sie vorsichtig sein, die richtige Methode zu verwenden.

Als ein Beispiel in der Frage des Themaherstellers haben sie speziell gefragt, "Was ist der beste Weg, Ruby einzutragen, dass eine Datei leer ist?" Die akzeptierte Antwort führt das korrekt durch und wird eine Fehlermeldung No such file or directory auslösen, wenn die Datei nicht vorhanden ist.

In einigen Situationen können wir das Fehlen einer Datei als "äquivalent" zu einer leeren Datei betrachten.

0

Ab Ruby 2.4.0 gibt es File.empty?.

(Beachten Sie, dass es immer wieder false, wenn Sie es ein Verzeichnis übergeben, ob das Verzeichnis leer ist oder nicht.. File.empty?('/') # => false So Dir.empty? stattdessen dafür verwenden, oder Pathname#empty? die beiden Werke für Dateien und Verzeichnisse)

Verwandte Themen