我有一個在Windows上創建的文件,所以它有回車符「\ r \ n」。跨平臺比較文件內容
該文件用於測試中,文件內容與測試過程中生成的文件內容進行比較。測試在Windows上傳遞,因爲生成的文件具有相同的回車。
但是這個測試沒有通過Unix/Mac。
它失敗,因爲生成的文件有換行符,即。只有「\ n」。
任何人都可以建議如何處理這個?
編輯: 該測試是一個JUnit(Java)測試。
我有一個在Windows上創建的文件,所以它有回車符「\ r \ n」。跨平臺比較文件內容
該文件用於測試中,文件內容與測試過程中生成的文件內容進行比較。測試在Windows上傳遞,因爲生成的文件具有相同的回車。
但是這個測試沒有通過Unix/Mac。
它失敗,因爲生成的文件有換行符,即。只有「\ n」。
任何人都可以建議如何處理這個?
編輯: 該測試是一個JUnit(Java)測試。
我結束了不使用真實文件,並且測試在運行時使用system屬性在平臺上創建文件以獲取平臺行終止符。
選項1是一種可能性,但它是一種低級別的做法。選項2增加了維護2個文件的開銷,並增加了複雜性,以決定根據操作系統測試需要哪個文件,實際上並不理想。謝謝你的迴應。 – C0deAttack 2011-04-14 11:17:27
如果是JUnit,最好的選擇是更新你的比較函數/過程。除非您逐字節比較文件,否則您可以使用正則表達式來將行分隔符(unix和win)替換爲某個預期的字符序列(例如,'| n') – 2011-04-14 11:49:39
你可以試試下面的一行來避免讀取符合
String text = FileUtils.readFileAsString(filename)
.replaceAll("(\r\n|\r|\n)", "\n");
這將替換任何類型的所有新線路爲「\ n」
這可能是最好的解決方案,因爲它首先防止出現問題。 – asgs 2011-05-04 09:46:00