打开文件而不创建新文件

时间:2014-08-02 07:19:58

标签: ruby file io

我有一个ruby函数可以访问我的unix文件系统中的文件。 我有2050个文件,每个文件代表一个专用目录中的散列值。 该函数读取包含电子邮件地址的文件并执行散列函数,找出文件ID并打印。

通常我用Java做这些事情,但我想在Ruby中开始做。我的问题是,在我的函数中,我尝试打开正确的文件进行读取,但是当没有提供代码块时,我看到 open new 的工作方式相同。在IO类中,方法::openWith no associated blockIO.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

1 个答案:

答案 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