我有一个ruby函数可以访问我的unix文件系统中的文件。 我有2050个文件,每个文件代表一个专用目录中的散列值。 该函数读取包含电子邮件地址的文件并执行散列函数,找出文件ID并打印。
通常我用Java做这些事情,但我想在Ruby中开始做。我的问题是,在我的函数中,我尝试打开正确的文件进行读取,但是当没有提供代码块时,我看到 open 与 new 的工作方式相同。在IO类中,方法::openWith no associated block
,IO.open
是::new
的同义词。
我只需要打开文件,将读取器指针设置为第一个可用行,写入和刷新。
为简单起见,我将把每个代码语句放在一行中。应以当前状态打开文件(请参阅HERE
注释)。
def dispatch
while (id=IDS_FILE.gets)
bucket="#{BUCKETS}" << (PERFORM HERE THE HASH CALCULATION) ".txt"
#HERE
bucket_file=File.open("#{bucket}","w")
bucket_file.write(id)
bucket_file.close
end
log "Writing #{id.chomp!} to #{bucket_file.to_path}"
end
end
答案 0 :(得分:0)
要获取“要使用其当前状态打开的文件”,您需要“追加模式”,as documented here:
"a" Write-only, starts at end of file if file exists, otherwise creates a new file for writing.
所以你的代码应该这样读:
File.open(bucket, "a") do |f|
f.write id
end