如果我想将src文件的内容追加到Ruby中的dest文件的末尾,那么使用它是否更好:
while line = src.gets do
Run Code Online (Sandbox Code Playgroud)
要么
while buffer = src.read( 1024 )
Run Code Online (Sandbox Code Playgroud)
我已经看到两者都使用过,并且想知道我何时应该使用每种方法?为什么?
一个用于读取"行",一个用于读取n个字节.
虽然字节缓冲可能更快,但很多可能会消失在操作系统中,无论如何都可能进行缓冲.IMO它更多地与读取的上下文有关 - 你想要线条,还是你只是拖拽数据块?
也就是说,在决定时,在特定环境中进行性能测试可能会有所帮助.
在阅读针对不同情况定制的文件时,您有许多选项.
逐行读入文件,但一次只存储一行:
while (line = file.gets) do
# ...
end
Run Code Online (Sandbox Code Playgroud)
一次读入文件的所有行:
file.readlines.each do |line|
# ...
end
Run Code Online (Sandbox Code Playgroud)
以一系列块的形式读取文件:
while (data = file.read(block_size))
# ...
end
Run Code Online (Sandbox Code Playgroud)
立即读入整个文件:
data = file.read
Run Code Online (Sandbox Code Playgroud)
这实际上取决于您正在使用的数据类型.通常read更适合二进制文件,或者那些你想要它作为一个大字符串的文件.gets并且readlines类似,但readlines如果您确信文件适合内存,则更方便.不要在多千兆字节的日志文件上执行此操作,否则当您的系统开始交换时,您将陷入伤害的世界.使用gets了这样的情况.
| 归档时间: |
|
| 查看次数: |
8042 次 |
| 最近记录: |