tags:

views:

58

answers:

3

I have a simple script that does some search and replace. This is basically it:

File.open("us_cities.yml", "r+") do |file|
  while line = file.gets
  "do find a replace"
  end
  "Here I want to write to a new file"
end

As you can see I want to write a new file with the output. How can I do this?

A: 

Read Programming Ruby - Basic I/O

Justin Ethier
Yeah, that's the pickaxe book. I don't see where it shows how to create a new file after opening a new one and doing some changes.
Sam
+1  A: 

Outputting to a new file can be done like this :

output = File.open( "outputfile.yml" )
output << "This is going to the output file"
output.close

So in your example, you could do this :

File.open("us_cities.yml", "r+") do |file|
  while line = file.gets
    "do find a replace"
  end
  output = File.open( "outputfile.yml", "w" )
  output << "Here I am writing to a new file"
  output.close      
end

If you want to append to the file, make sure you put the opening of the output file outside of the loop.

JoMo
A: 

First you have to create a new file such as newfile.txt

Then change the script to

File.open("us_cities.yml", "r+") do |file|
  new_file = File.new("newfile.txt", "r+")
  while line = file.gets
  new_file.puts "do find a replace"
  end
end

This will make a new file with the output

Sam