繁体   English   中英

回车和换行窗口和Linux Java应用程序

[英]Carriage Return and Line Feed windows and Linux java application

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

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

任何人都可以在这里提供帮助。

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

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

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

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

您可以从下载的文件中删除所有的'\\ r'字符吗? 或用“ \\ n” Linux替换Windows字符串“ \\ r \\ n”。 还要注意Mac的情况:行尾可以用“ \\ r”标识。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM