2011-04-14 60 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”