我的程序有问题。它说:“`write':封闭流(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
答案 0 :(得分:2)
所以你的程序基本上是这样的:
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
个对象。
我不知道你的程序的整个结构,但也许你应该在File
方法中实例化backup
对象。这就是你应该如何在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