3

アーカイブ ファイルをディスクに保存せずに zip アーカイブを作成しようとしました。したがって、最初にディスクに保存するメソッドを記述します。

begin
  file = Zip::File.open("#{file_name}.zip", Zip::File::CREATE)
  save_file file_name
  file.add(file_name, file_name)
rescue IOError => e
  puts "Error: #{e}"
ensure
  file.close unless file.nil?
  File.delete file_name
end

これは正常に機能しますが、保存アーカイブ ファイルを作成する前です。

次に、このコードを書き込もうとしました。最初に、必要なファイル ウィッチを使用して StringIO zip アーカイブを作成しました。次に、それらを bin モードでディスクに保存できませんでした。

string_io = Zip::OutputStream.write_buffer do |zos|
  zos.put_next_entry(file_name)
  zos.write dictionary.join(', ')
end

# Something wrong below
File.open("#{file_name}.zip", 'wb') do |file|
  file.write string_io
  file.close
end

何が間違っていますか?そしてそれを正しい方法で行う方法は?

4

1 に答える 1