在复制文件时,Ruby 可以通过使用 File
类和 IO
类的方法来实现显示进度。以下是一个简单的示例,展示了如何在复制文件时显示进度:
require 'fileutils'
def copy_with_progress(src, dest)
File.open(src, 'rb') do |input|
File.open(dest, 'wb') do |output|
buffer = ''
input_size = input.size
total_bytes_copied = 0
while input.read(1024, buffer)
output.write(buffer)
total_bytes_copied += buffer.size
progress = (total_bytes_copied.to_f / input_size.to_f) * 100
print "\r复制进度: #{progress.round(2)}%"
end
end
end
puts "\n复制完成"
end
src = 'source_file.txt'
dest = 'destination_file.txt'
copy_with_progress(src, dest)
在这个示例中,我们定义了一个名为 copy_with_progress
的方法,该方法接受源文件和目标文件的路径作为参数。我们使用 File.open
方法打开源文件和目标文件,并使用 input.size
获取源文件的大小。然后,我们使用一个循环来读取源文件的内容,并将其写入目标文件。在每次迭代中,我们计算已复制的字节数和总字节数,并计算复制进度百分比。最后,我们使用 puts
输出复制完成的消息。
这个示例使用了 Ruby 的 File
类和 IO
类,并通过在循环中计算进度百分比来显示复制进度。
领取专属 10元无门槛券
手把手带您无忧上云