问题描述
首先,您应该将文件作为二进制文件打开。然后,您可以在一个命令中读取整个文件。
file = File.open("path-to-file.tar.gz", "rb")
contents = file.read
之后,您可能想要file.close
. 如果你不这样做,file
在它被垃圾收集之前不会被关闭,所以在它打开的时候会稍微浪费系统资源。
解决方法
我需要一种简单的方法来获取 tar 文件并将其转换为字符串(反之亦然)。有没有办法在 Ruby 中做到这一点?我最好的尝试是这样的:
file = File.open("path-to-file.tar.gz")
contents = ""
file.each {|line|
contents << line
}
我认为将其转换为字符串就足够了,但是当我尝试像这样将其写回时…
newFile = File.open("test.tar.gz","w")
newFile.write(contents)
不是同一个文件。做ls
-l
显示文件大小不同,尽管它们非常接近(打开文件会显示大部分内容完好无损)。我是否犯了一个小错误或完全不同(但可行)的方法来实现这一点?