创建文件并在其中填充数据后,在关闭之前,需要读取零件数据和 计算校验和。问题是您在关闭文件之前无法读取数据。码 摘录如下。
我的问题是如何创建文件,写入数据,读取文件的一部分,然后关闭它?一 可能的解决方案是在写入文件之前使用缓冲区,但是如果不方便的话 文件很大,例如MB,GB,TB,PB。
begin
File.open(@f_name,"w+") do |file|
@f_old_size.times do
file.write "1"
end
file.flush
file.sync
#################
# read file fails
# before close
#################
while line = file.gets
puts line
end
end
rescue => err
puts "Exception: #{err}"
end
#####################
# read file successfully
# after close it
#####################
File.open(@f_name,"r") do |file|
line = file.gets
puts line
end
答案 0 :(得分:1)
您遇到的问题是Ruby IO读取文件并跟踪文件中的位置。在写完数据后,IO对象的“搜索头”位于文件的底部。当你问下一行时,因为它在底部,你什么也得不到。
如果您将代码更改为包含file.rewind
,则可以:
#################
# read file fails
# before close
#################
file.rewind # <-- THIS IS THE ADDED LINE
while line = file.gets
puts line
end
#rewind
方法将“搜索头”设置回文件的开头,这是您要查看的内容。