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?
First, you should open the file as a binary file. Then you can read the entire file in, in one command.
That will get you the entire file in a string.
After that, you probably want to
file.close. If you don’t do that,filewon’t be closed until it is garbage-collected, so it would be a slight waste of system resources while it is open.