data = "BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08"
File.open("data.bz2", "wb") do |f|
f.write(data)
end
write
prend une chaîne de caractères comme argument et vous avez une chaîne de caractères. Il n'est pas nécessaire de déballer cette chaîne en premier. Vous utilisez Array#pack
pour convertir un tableau de par exemple des nombres en une chaîne binaire que vous pouvez ensuite écrire dans un fichier. Si vous avez déjà une chaîne, vous n'avez pas besoin de la déballer. Vous utilisez unpack pour convertir une telle chaîne binaire en un tableau après l'avoir lue à partir d'un fichier (ou d'ailleurs).
Remarquez également que lorsque vous utilisez File.open
sans un block et sans sauvegarder l'objet File comme File.open(arguments).some_method
, vous laissez fuiter un descripteur de fichier.