Ruby写入内存中的文件(实际上并没有写入它)

时间:2016-04-08 10:00:12

标签: ruby memory temporary-files stringio

所以我有这个程序可以传递一个字符串(这个字符串是它应该读取的文件的路径)

现在我有一个必须打开该文件的方法。用Gsub更改文本,然后再输出该文件(原始文件无法编辑)但我最终需要输出更改的文件

这是我用来更改文件的方法(简化)

def self.changeFile(myfile)
myfile = @path

doc = File.open(myfile)
text = doc.read

text.gsub!("change" , "changed")

return text

这个问题是我把整个文件作为字符串返回。我的其他方法使用"字符串"的输入。路径名

所以我的问题是,无论如何我可以将文本写入我在内存中更改的文件,所以没有实际更改原始文件?

我正在考虑使用" Tempfile"或" StringIO"但我不知道这是不是正确的事情

感谢所有帮助

1 个答案:

答案 0 :(得分:0)

你可以使用太阳穴:

def self.changeFile(myfile)
  myfile = @path
  tempfile = Tempfile.new("changed")
  tempfile << File.open(myfile).read.gsub("change" , "changed")
  tempfile.close
  tempfile.path
end