I\'m trying to create a new file and things don\'t seem to be working as I expect them too. Here\'s what I\'ve tried:
File.new \"out.txt\"
File.open \"out.tx
data = 'data you want inside the file'.
You can use File.write('name of file here', data)
Use:
File.open("out.txt", [your-option-string]) {|f| f.write("write your stuff here") }
where your options are:
r
- Read only. The file must exist. w
- Create an empty file for writing. a
- Append to a file.The file is created if it does not exist. r+
- Open a file for update both reading and writing. The file must exist. w+
- Create an empty file for both reading and writing. a+
- Open a file for reading and appending. The file is created if it does not exist. In your case, 'w'
is preferable.
OR you could have:
out_file = File.new("out.txt", "w")
#...
out_file.puts("write your stuff here")
#...
out_file.close
OK, now I feel stupid. The first two definitely do not work but the second two do. Not sure how I convinced my self that I had tried them. Sorry for wasting everyone's time.
In case this helps anyone else, this can occur when you are trying to make a new file in a directory that does not exist.
You can also use constants instead of strings to specify the mode you want. The benefit is if you make a typo in a constant name, your program will raise an runtime exception.
The constants are File::RDONLY
or File::WRONLY
or File::CREAT
. You can also combine them if you like.
Full description of file open modes on ruby-doc.org
Try
File.open("out.txt", "w") do |f|
f.write(data_you_want_to_write)
end
without using the
File.new "out.txt"
Try using "w+"
as the write mode instead of just "w"
:
File.open("out.txt", "w+") { |file| file.write("boo!") }