2009-07-27 22 views

cevap

4

:

filename = "imcs2.xml" 
content = File.open(filename, "rb") { |io| io.read } 
File.open(filename, "wb") { |io| 
    io.print content.chomp 
    io.print "yourstuff" # Your Stuff Goes Here 
} 

Alternatif sadece io.seek() geriye son yeni satır üzerinde varsa Ne çalışıyoruz tahmin etmek değil çalışacağım

last_line = 0 
file = File.open(filename, 'r+') 
file.each { last_line = file.pos unless file.eof? } 

file.seek(last_line, IO::SEEK_SET) 
#Write your own stuff here 
file.close 
+0

Bu, değiştirme metninizin, dosyanın son satırındaki orijinal metinden daha uzun olduğu sürece çalışır. Daha kısasa, eklediğiniz satırdan sonra kalan kısım yeni bir satıra aktarılacaktır. – Excalibur

+0

Bu kod bir dosyanın son satırını silmez. –

1

kolay yolu, tüm dosya okumak sonunda '\ n' kaldırmak ve kendi ile tamamen tekrar yazmaya adildir içerik: wan varsayarsak

filename = "imcs2.xml" 
File.open(filename, "a") { |io| 
    io.seek(-1, IO::SEEK_CUR) # -1 for Linux, -2 for Windows: \n or \r\n 
    io.print "yourstuff" # Your Stuff Goes Here 
} 
6

: dosyanın tüm son satırı kaldırmak için t, orada yazılı son satırın başlangıcını bulur ve başlar bu yöntemi kullanabilirsiniz Bunu yapmak için, ancak bir XML dosyasındaki kök öğenin kapatma etiketinden kurtulmaya çalışıyorsanız, daha fazla alt etiket ekleyebilmeniz için sonra kapanış kök etiketini yeniden ekleyin. Bu XML yazma/düzenleme görevini kolaylaştıran yakut modülleri. Sadece söylüyorum.

Belki Oluşturucu:

hpricot da iş gibi görünüyor:

+0

Psişik bir iş bulmalısın :). Tam olarak yapmaya çalıştığım şey buydu, bu yüzden küçük bir korsanlık meselesiydi, bu yüzden bu konuda fazla araştırma yapmadım, ancak ekstra mil için teşekkürler! –

+0

Sorun değil! Üzgünüm, kesin bir cevap vermedim, ama neredeyse pozitifim ki, sizin için bunu yapacak araçlar var. Yaklaşık 15 dakika aradım ve bunları buldum. Tabii ki, projenizi bitirme motivasyonu ile vermiş olduğunuzların yeterli olmaması durumunda daha iyi ve muhtemelen daha iyi çözümler bulmak zorundasınız. –