Ruby在复制文件时显示进度

我希望能够在使用 Ruby复制文件时显示文件复制操作的进度(当前使用的是FileUtils.cp)我已经尝试将verbose选项设置为true,但这似乎只是向我展示了发出的复制命令.

我现在正在从命令行运行这个脚本,所以理想情况下我希望能够在复制文件时呈现像SCP那样的东西,但只要我能看到进展,我就不会对演示文稿感到太过兴奋.

解决方法

由于我没有足够的代表编辑答案,这里是基于pisswillis答案的我的版本,我发现了一个 progress bar gem,我也在我的例子中使用.我已经测试了这个并且它到目前为止一直运行良好,但它可以做一些清理:
require 'rubygems'
require 'progressbar'

in_name     = "src_file.txt"
out_name    = "dest_file.txt"

in_file     = File.new(in_name,"r")
out_file    = File.new(out_name,"w")

in_size     = File.size(in_name)
# Edit: float division.
batch_bytes = ( in_size / 100.0 ).ceil
total       = 0
p_bar       = ProgressBar.new('Copying',100)

buffer      = in_file.sysread(batch_bytes)
while total < in_size do
 out_file.syswrite(buffer)
 p_bar.inc
 total += batch_bytes
 if (in_size - total) < batch_bytes
   batch_bytes = (in_size - total)
 end
 buffer = in_file.sysread(batch_bytes)
end
p_bar.finish

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...