首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >就地修改IO流?红宝石

就地修改IO流?红宝石
EN

Stack Overflow用户
提问于 2009-11-24 19:47:08
回答 1查看 330关注 0票数 1

我一直在写一个合并两个文件内容的ruby程序。例如,如果torrent已分别下载了两次,它会尝试合并已完成的块的内容。

因此,我一直在寻找一种方法,它只在需要的地方修改流,并且只保存该块,而不是再次保存整个流。

我正在以16KIB的块读取文件,如何“替换”(而不是附加)这16KIB的内容,以便只将这些字节写入磁盘,而不是每次都重写整个文件!

有点,

代码语言:javascript
复制
#Doesn't exist unfortunately.
#By default it appends instead of replacing, so file size grows.
IO.write(file_name, content, offset, :replace => true)

有没有一种方法可以实现这种功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-24 20:02:32

"r+b"模式下打开文件,查找到该位置,然后直接写入:

代码语言:javascript
复制
f=File.new("some.existing.file", "r+b");
f.seek(1024);
f.write("test\n");
f.close()

这将覆盖文件的5个字符,偏移量为1024。

如果文件比搜索偏移量短,则会在文件中插入适当数量的空字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1789565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档