2011-04-14 81 views
2

我有一個在Windows上創建的文件,所以它有回車符「\ r \ n」。跨平臺比較文件內容

該文件用於測試中,文件內容與測試過程中生成的文件內容進行比較。測試在Windows上傳遞,因爲生成的文件具有相同的回車。

但是這個測試沒有通過Unix/Mac。

它失敗,因爲生成的文件有換行符,即。只有「\ n」。

任何人都可以建議如何處理這個?

編輯: 該測試是一個JUnit(Java)測試。

回答

0

我結束了不使用真實文件,並且測試在運行時使用system屬性在平臺上創建文件以獲取平臺行終止符。

+0

這可能是最好的解決方案,因爲它首先防止出現問題。 – asgs 2011-05-04 09:46:00

1
  • 你可以比較文件讀取這些行由行
  • 你可以有兩種不同的示例文件UNIX/Windows的
+0

選項1是一種可能性,但它是一種低級別的做法。選項2增加了維護2個文件的開銷,並增加了複雜性,以決定根據操作系統測試需要哪個文件,實際上並不理想。謝謝你的迴應。 – C0deAttack 2011-04-14 11:17:27

+0

如果是JUnit,最好的選擇是更新你的比較函數/過程。除非您逐字節比較文件,否則您可以使用正則表達式來將行分隔符(unix和win)替換爲某個預期的字符序列(例如,'| n') – 2011-04-14 11:49:39

1

你可以試試下面的一行來避免讀取符合

String text = FileUtils.readFileAsString(filename) 
         .replaceAll("(\r\n|\r|\n)", "\n"); 

這將替換任何類型的所有新線路爲「\ n」