2008-01-10

File io read/write to a file

关键字: file io read write
原本是想在以读写的方式打开一个文件,然后在此文件中查找相对应的字符并替换,起初偿试的是找到需要的字符后把文件的指针移动到此line的头位置,重写,然而重写的时候是replace而非insert,这样就导致了如果替换的字符小于或大于的时候,就会留下不能被替换掉。

f = File.open("/root/Desktop/test.txt","r+")

c=f.readline    =>   # "test file replace" len=17
假若需要把test字符换成 hello world
那么先把
f.seek(-17,IO:SEEK_CUR) 把文件指针移到test字符的前面,
然后用f.write("hello world")
这时你会发现,"test file replace" 被替换成了"hello worldreplace"

替换字符失败,此方法不行


而另想了个方法:
这个方法实现的是把文件全部读出,读出的同时进行替换,暂时存储在一个变量中,最后把替换完的文件再重写入文件。

此方法对于小文件没问题,要是文件有上面百M的时候,就难以行通了。
tmpfile = []
File.open("#{RAILS_ROOT}/app/controllers/#{MOULD_TABLE_NAME}_controller.rb","r").readlines.each do |line|
      re = Regexp.new(MOULD_CONTROLLER_NAME)
      re_model = Regexp.new(MOULD_MODEL_NAME)
        tmpfile << line.gsub(re,CHANNEL_CONTROLLER_NAME).gsub(re_model,CHANNEL_MODEL_NAME)
    end #auto close file
f=File.open(("#{RAILS_ROOT}/app/controllers/#{MOULD_TABLE_NAME}_controller.rb","w+")
f.write(tmpfile)
f.close

评论
xu_wccq 2008-01-15
更多关于FILE CONTENT 的处理方法。

http://pleac.sourceforge.net/pleac_ruby/filecontents.html
发表评论

您还没有登录,请登录后发表评论

xu_wccq
搜索本博客
我的相册
Ac7ad940-edbc-3b23-8443-5fe2ea338061-thumb
productcenter.bmp
共 2 张
最近加入圈子
存档
最新评论