多次写入文件



我想知道如何写两次图片而不写一次然后复制它.
下载图片时,它被写入/tmp 中,然后复制到想要的路径(我认为),这意味着以下代码:

cover_buffer = download_pic(link)      
buffer2 = cover_buffer
open(@dir + 'cover.jpg', 'wb') do |pic|
    pic << cover_buffer.read()
end
open(@dir + 'cover2.jpg', 'wb') do |pic|
    pic << cover_buffer2.read()
end

不起作用,因为 cover_buffer 和 buffer2 都指向同一个文件,在写入 cover.jpg
时移动了执行该代码将正确地将图片写入封面.jpg但 cover2.jpg 将是一个空文件

经过测试的解决方案

在文件 two_for_one.rb 中:

current_dir  = File.expand_path(File.dirname(__FILE__))
new_file_1   = File.new(File.join(current_dir, 'image_1.png'), 'w')
new_file_2   = File.new(File.join(current_dir, 'image_2.png'), 'w')
origin_file  = File.join(current_dir, 'original_image.png')
begin
  File.open(origin_file, "r") do |source|
    until source.eof?
      chunk = source.read(1024)
      new_file_1.write(chunk)
      new_file_2.write(chunk)
    end
  end
ensure
  new_file_1.close()
  new_file_2.close()
end

命令行:

$ ruby two_for_one.rb

相关内容

  • 没有找到相关文章