2014-12-05 25 views
3

我在Windows上運行Ruby 1.9.3。當我運行的代碼如何在Ruby上保留行結束符?

text = File.read(path) 
File.write(path, text) 

下面的代碼片段,我得到完全相同的文件時,文件具有CR + LF行尾。當我使用LF換行符結束文件時,它會更改爲CR + LF換行符結尾。

如何在Windows上使用Ruby讀取和寫入文件,以便保留行結束符,無論是CR + LF還是LF?

回答

5

Ruby和Perl以及可能是Python一樣,都知道代碼運行的操作系統,並且會自動設置行尾應該是什麼。

如果您閱讀並編寫了一個文本文件,那麼這些設置將會啓動,您將看到文件發生變化。

如果您需要有文件不變,增加一個b標誌的open語句,如:

File.open('path', 'wb') do |fo| 
    fo.write(text) 
end 

有關更多信息,請參閱「IO Open Mode」。

+0

這將保留LF換行符結束符,但現在CR + LF換行符結尾符號將轉換爲LF。 – cm007 2014-12-05 19:44:44