Module: FileUtils
- Defined in:
- lib/rubyhacks.rb
Class Method Summary collapse
-
.tail(file_name, lines = 10, sep = $/) ⇒ Object
def self.tail(file_name, lines = 10, sep = $/) file = File.open(file_name, ‘r’) string = “” pos = -1 n = 0 size = file.stat.size # return string if size == 0 while size > 0 file.sysseek(pos, IO::SEEK_END) char = file.sysread(1) n+= 1 if char == sep break if n == lines + 1 string = char + string break if pos == - size pos -= 1 end file.close return string end.
Class Method Details
.tail(file_name, lines = 10, sep = $/) ⇒ Object
def self.tail(file_name, lines = 10, sep = $/) file = File.open(file_name, ‘r’) string = “” pos = -1 n = 0 size = file.stat.size # return string if size == 0 while size > 0 file.sysseek(pos, IO::SEEK_END) char = file.sysread(1) n+= 1 if char == sep
break if n == lines + 1 string = char + string break if pos == - size pos -= 1 end file.close return string end
824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 |
# File 'lib/rubyhacks.rb', line 824 def self.tail(file_name, lines = 10, sep = $/) if lines > 49 and sep == "\n" # The command line utility will be much faster begin return `tail -n #{lines} #{file_name}` rescue => err #in case the command tail can't be found # puts err end end file = File.open(file_name, 'r') string = "" pos = -1 n = 0 size = file.stat.size while size > 0 file.sysseek(size + pos) char = file.sysread(1) n+= 1 if char == sep and not pos == -1 break if n == lines string = char + string break if pos == - size pos -= 1 end file.close return string end |