每次都删除文件

时间:2015-07-28 09:18:24

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个红宝石控制器

Save

所以在这里,我正在阅读像

这样的文件
def new
    counter = 1
    fileW = File.new("query_output.txt", "w") 
    file = File.new("query_data.txt", "r")
    while (line = file.gets)
        puts "#{counter}: #{line}"
        query = "select name,highway from planet_osm_line where name ilike '" +line+"'"
        @output = PlanetOsmLine.connection.execute(query)   
        @output.each do |output|
            fileW.write(output['highway'] + "\n")
        end
        counter = counter + 1
    end
    file.close
    query = ""
   @output = PlanetOsmLine.connection.execute(query)
 end

在ruby控制台中,我可以看到所有查询都被执行但在query_output.txt中我只得到最后一个查询的输出。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您使用filemode w,每次都会重新创建输出文件(因此您将写入空文件)。而是按如下方式打开文件:

fileW = File.new("query_output.txt", "a")

a代表append。它将打开或创建文件,并附加在后面。

有关文件模式的更多信息:http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html