本人测试的ruby版本是ruby1.9.3p286  
  
  file1.printvalue 
 seeklen =45736 
 file2.seek(seeklen) 
 file3 =File.open(filepath1,”a+”)   #追加方式  
 file3.puts”” 
 while value =file2.gets       
  file3.printvalue 
 end 
首先我读取一个 100M 的1.txt文件
然后将它完全复制到另一个2.txt中,发现只能复制45736kb
代码主要部分如下:
puts “文件大小是:#{File.size(filepath)}字节”#文件再大它的大小还是能够正确的读出来的
while value = file.gets     
end
那么我们怎么办才能全部复制过去呢?
其实很简单只要使用file.seek 就可以了
在 Ruby 中,
IO类有如下三个常量用于指示从何处开始在 IO 流中搜寻数据:SEEK_CUR:从当前位置开始SEEK_END:从 IO 流末尾位置开始SEEK_SET:从 IO 流起始位置开始(亦即”绝对位置“)再配合 file.seek就可以了
我的修改后 额外增加的部分主要代码如下:
这就解决了
具体如何完整的应用请自己研究吧,这里只是提供个思路

此文章通过 python 爬虫创建,原文是自己的csdn 地址: ruby 操作大文件