省事点就不管有没有目录先创建再说
FileUtils.mkdir_p(File.dirname(fname)) rescue {}
然后当作目录已经创建处理
或者这样
#!/usr/bin/env
require "fileutils"
def eazy_file(fname)
begin
File.open(fname, "w+") do |file|
yield file
end
rescue Errno::ENOENT => e
FileUtils.mkdir_p(File.dirname(fname))
retry
end
end
if __FILE__ == $0
eazy_file("a/b/c/test.txt") do |file|
file.puts "Hello world!"
end
end
if Dir.glob('a').size == 0
Dir.mkdir('./a')
end
if Dir.glob('./a/b').size == 0
Dir.mkdir('./a/b')
end
if !File.exist?("./a/b/test.txt")
File.new("./a/b/test.txt","w")
end