2013-04-12 22 views
30

Mam plik tekstowy na przykład. Jaki jest najlepszy sposób sprawdzenia w Ruby, czy plik jest pusty? File.size('test.rb') == 0 wygląda brzydko.Jak sprawdzić, czy plik jest pusty?

+1

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

+2

IMHO ta składnia wyraźnie określa intencję kodu, co jest dobrą rzeczą. – fmendez

Odpowiedz

46

Można użyć metody zero?:

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

Mniej gadatliwa niż moja wersja. – leemour

2

Najlepszym sposobem może być w ogóle nie sprawdzić, ale iteracyjne nad każdym wierszu i robić rzeczy dla każdej iteracji. 0 lines = 0 iterations = nie jest wymagany dodatkowy kod.

2

File.size?('test.rb') ocenia na nil, jeśli plik jest pusty or nie istnieje. File.zero?('test.rb') zwróci wartość false, jeśli plik jest pusty, ale zwróci także wartość false, jeśli plik nie zostanie znaleziony. W zależności od Twoich szczególnych potrzeb powinieneś uważać, aby użyć właściwej metody.

Jako przykład w pytaniu twórcy tematu wyraźnie zadali pytanie: "Jaki jest najlepszy sposób sprawdzenia w Ruby, czy plik jest pusty?" Zaakceptowana odpowiedź robi to poprawnie i spowoduje zgłoszenie błędu o numerze No such file or directory, jeśli plik nie istnieje.

W niektórych sytuacjach możemy uznać brak pliku za "równoważny" pustemu plikowi.

0

Od wersji Ruby w wersji 2.4.0 jest File.empty?.

(Zauważ, że zawsze zwraca false jeśli przekazać je katalogiem, czy ten katalog jest pusty, czy nie.. File.empty?('/') # => false więc używać Dir.empty? na tym, że zamiast, lub Pathname#empty? który pracuje dla obu plików i katalogów)

Powiązane problemy