本人测试的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 操作大文件