Read binary file as string in Ruby
file-io, ruby, string
Solution
First, you should open the file as a binary file. Then you can read the entire file in, in one command.
file = File.open("path-to-file.tar.gz", "rb")
contents = file.read
That will get you the entire file in a string.
After that, you probably want to `file.close`. If you don’t do that, `file` won’t be closed until it is garbage-collected, so it would be a slight waste of system resources while it is open.
Problem
I need an easy way to take a tar file and convert it into a string (and vice versa). Is there a way to do this in Ruby? My best attempt was this: ``` file = File.open("path-to-file.tar.gz") contents = "" file.each {|line| contents << line } ``` I thought that would be enough to convert it to a string, but then when I try to write it back out like this... ``` newFile = File.open("test.tar.gz", "w") newFile.write(contents) ``` It isn't the same file. Doing `ls -l` shows the files are of different sizes, although they are pretty close (and opening the file reveals most of the contents intact). Is there a small mistake I'm making or an entirely different (but workable) way to accomplish this?