我想知道如何写两次图片而不写一次然后复制它.
下载图片时,它被写入/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