我有一个在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