-
Notifications
You must be signed in to change notification settings - Fork 85
/
Copy pathfile.rb
66 lines (54 loc) · 975 Bytes
/
file.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class File < IO
def self.atime(filename)
File.new(filename).atime
end
def self.ctime(filename)
File.new(filename).ctime
end
def self.mtime(filename)
File.new(filename).mtime
end
def self.open(filename, mode="r", perm=nil, opt=nil, &block)
f = self.new filename, mode, perm, opt
return f unless block
begin
return yield f
ensure
f.close
end
end
def self.truncate(filename, length)
File.open(filename) do |f|
f.truncate(length)
end
end
def self.size(filename)
return File.stat(filename).size
end
def self.zero?(filename)
File.size(filename) == 0
rescue Errno::ENOENT
false
end
def size
return self.stat.size
end
def zero?
self.size == 0
end
class << self
alias_method :realpath, :expand_path
end
end
class File::Stat
def size?
if self.size == 0
nil
else
self.size
end
end
def zero?
self.size == 0
end
end