我的程序有问题。它说:"'写入':闭合流(IOError)"。
def backup(dir, file, time="")
fullpath = "#{dir}/#{file}"
#puts fullpath
@f.puts "BKP_DATE: #{$date}"
@f.puts "BKP_DIRECTORY: #{dir}"
@f.puts "M_TIME: #{time}"
@f.puts "BKP_FILE: #{file}"
IO.readlines(fullpath).each do |line|
@f.puts line
end
@f.close()
end
所以你的程序基本上是这样的:
f = File.open("foo.dat", "w")
f.puts "BKP_DATE: "
...
IO.readlines(fullpath).each do |line|
f.puts line
end
f.close
f.puts "BKP_DATE: "
...
IO.readlines(fullpath).each do |line|
f.puts line
end
f.close
您尝试两次close
相同的File
对象。
我不知道你的程序的整个结构,但也许你应该在backup
方法中实例化File
对象。 这就是你应该用 Ruby 编写它的方式(:
File.open("foo.dat", "w") {|f|
f.puts "BKP_DATE: "
IO.readlines(fullpath).each do |line|
f.puts line
end
} # f is automatically closed here
如果您确实需要在backup
方法之外打开文件,我认为您在bakcup
结束时需要的是@f.flush
而不是@f.close
。 如果您不会在脚本中打开数百个文件,这对您来说是一个可接受的解决方案。
至于暂停,请尝试sleep 5.0
- http://apidock.com/ruby/Kernel/sleep