我一直在写一个合并两个文件内容的ruby程序。例如,如果torrent已分别下载了两次,它会尝试合并已完成的块的内容。
因此,我一直在寻找一种方法,它只在需要的地方修改流,并且只保存该块,而不是再次保存整个流。
我正在以16KIB的块读取文件,如何“替换”(而不是附加)这16KIB的内容,以便只将这些字节写入磁盘,而不是每次都重写整个文件!
有点,
#Doesn't exist unfortunately.
#By default it appends instead of replacing, so file size grows.
IO.write(file_name, content, offset, :replace => true)有没有一种方法可以实现这种功能?
发布于 2009-11-24 20:02:32
在"r+b"模式下打开文件,查找到该位置,然后直接写入:
f=File.new("some.existing.file", "r+b");
f.seek(1024);
f.write("test\n");
f.close()这将覆盖文件的5个字符,偏移量为1024。
如果文件比搜索偏移量短,则会在文件中插入适当数量的空字符。
https://stackoverflow.com/questions/1789565
复制相似问题