2014-02-05 26 views
1

我在Windows機器上使用Ruby 1.9.3。Ruby IO.readlines在文件的最後一行之前停止

當我在文件上運行IO.readlines時,出現奇怪的意外結果。在文件上運行IO.readlines的結果是一個數組,它只是以不是文件最後一行的一行結束。例如,數組中的最後一個元素是此字符串:

MLOGIC(RESPONSE_FREQUENCY): Parameter NUMERATOR_SUBSET has value \x01where 

這是數組中的最後一個元素即使該文件實際上有更多的線路。

當我使用Ruby 2.0.0在OS X上完全相同的文件上運行IO.readlines時,沒有問題;它按預期將整個文件讀入數組中。

任何援助與此將不勝感激。

回答

0

在Windows與OSX的IO.readlines(文檔1.9.32.0.0)的主要區別是默認的行分隔符$/ -on unixoid系統,你會覺得這是"\n"和Windows是"\r\n"

要獲得相同的行爲,可以撥打IO.readlines像這樣:

arr = IO.readlines('./testfile', "\n") 
+0

您好,感謝您的response.I試過了,但它並沒有改變結果。 IO.readlines的結果仍然比它應該小。我認爲文件中有一個十六進制字符。我認爲IO.readlines在到達該角色時會停止。 – Glenn

+0

那麼,它*應該*不*。你嘗試過'File.read('./ testfile')。split(「\ n」)'? – DMKE

+0

我剛剛嘗試了拆分的代碼。同樣的結果。當它擊中一個看起來像一個十六進制字符的角色時,它會停止。 – Glenn

相關問題