新手问题 问题来了:ruby 如何实现在 windows 下编辑文件,替换指定行的内容?

vbgfnd · 2015年03月20日 · 最后由 africwildman 回复于 2015年03月20日 · 2268 次阅读

上文件: ftp.ftp: aaaaaaa bbbbbbb ccccccc

加入我要在文件的第二行改成 abc,预期内容为 aaaaaaa abc ccccccc

之前尝试用 File.open(ftp.ftp, "r+") do |file| file.each_line do |line| 改写功能代码 end end 在 each_line 迭代中找到第二行的开头位置,方法用的是 file.pos。然后 IO.write("ftp.ftp","abc",pos_value)#pos_value 是第二行开头位置的值

得到的结果是: aaaaaaa abcbbbb ccccccc

可以看到不符合预期,我试过方法 file.puts、file.print 都达不到要求,

求助大家要怎么写才能满足我的需求呢?有一种笨办法就是先用空格键吧原来的一行都充填了,再重新写,但是这种觉得太挫了。想看下大家有没有好点子

实在不行就写新文件,然后覆盖掉。

file.seek(-line.length-3, IO::SEEK_CUR)
file.write 'abc'

参考 http://stackoverflow.com/questions/10171714/replace-a-line-in-a-file-using-file-io-modes-in-ruby

#1 楼 @king1990_cool 我是这么做的,但是我想研究下有木有别的方法,要是文件超级大,只改动一些小部分的场景,如何很好满足呢?

#2 楼 @vbgfnd 貌似这东西只能写相同长度的

#3 楼 @king1990_cool 有道理,改变了写入行的长度后面的数据所在位置都需要前移,相当于把文件之后数据全部重新写入。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号