1. ホーム
  2. ルビー

[解決済み】Rubyでバイナリファイルを文字列として読み込む

2022-04-02 10:06:10

質問

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 を見ると、かなり近いものの、ファイルのサイズが異なっています(ファイルを開くと、ほとんどの内容がそのまま表示されます)。私が犯している小さな間違いか、全く別の(しかし実行可能な)達成方法があるのでしょうか?

どのように解決するのですか?

まず、ファイルをバイナリファイルとして開いてください。そうすれば、1つのコマンドで、ファイル全体を読み込むことができます。

file = File.open("path-to-file.tar.gz", "rb")
contents = file.read

これでファイル全体を文字列で取得することができます。

その後、おそらくあなたは file.close . それをしない場合 file はガベージコレクトされるまで閉じないので、開いている間はシステムリソースのわずかな浪費になります。