回车符和换行符窗口以及Linux java应用程序

我正在开发一个集成测试应用程序,这是我在测试用例中所做的,我读了一个测试输入文件,它存储在cvs中,写入文件系统中的文件,应用程序轮询目录文件,处理它并创建输出文件,我轮询目录输出文件,如果两个文件内容相等,测试用例是成功的(我正在读取输入文件和输出文件到字符串并比较它们) 。

问题是这个测试用例在Linux系统中运行时失败,原因是存储在cvs中的文件是从包含CRLF作为行终止的Windows系统检入的,而生成的输出文件的行终止是CR,现在当我读取这些文件并逐个字符地比较它们时,它们就会出现不匹配。

谁能帮到这里呢。

您可以使用System.getProperty("line.separator")检查主机操作系统的行分隔符

由于您使用的是文本文件,因此您还可以逐行比较文件内容。 检查LineNumberReader.readLine()

您可以尝试按行比较它们。 例如,使用FileUtils 。

 List file1 = FileUtils.readLines(...); List file2 = FileUtils.readLines(...); return file1.equals(file2); 

您可以从下载的文件中删除所有’\ r’字符? 或者用“\ n”Linux替换“\ r \ n”Windows字符串。 同时注意Mac的情况:行尾可以通过“\ r”来识别。

当您签入文件时,您可以告诉CVS它是一个二进制文件(cvs add -kb),然后CVS将不会转换行结尾。

这也有其他缺点,例如没有适当的差异,但如果你真的逐个字符地测试,我想你不需要那样。

请注意,添加文件时必须指定-kb,以后不能更改。