Окна возврата каретки и перевода строки и Java-приложение для Linux - PullRequest
0 голосов
/ 06 января 2012

Я работаю над интеграционным тестовым приложением, это то, что я делаю в тестовом примере, я читаю входной тестовый файл, который хранится в cvs, записываю его в файл в файловой системе, приложение опрашиваеткаталог для файла, обрабатывает его и создает выходной файл, и я опрашиваю каталог для выходного файла, контрольный пример успешен, если оба содержимого файла равны (я читаю оба входных файла и выходные файлы в строки иСравнение их)тогда как сгенерированный выходной файл имеет окончание строки как CR, теперь, когда я читаю эти файлы и сравниваю их символ за символом, они имеют несоответствие.

здесь может кто-нибудь помочь.

Ответы [ 4 ]

3 голосов
/ 06 января 2012

Вы можете попробовать сравнить их по линиям. Например. используйте для этого FileUtils .

List<String> file1 = FileUtils.readLines(...);
List<String> file2 = FileUtils.readLines(...);
return file1.equals(file2);
3 голосов
/ 06 января 2012

Вы можете проверить разделитель строк для операционной системы хоста, используя System.getProperty("line.separator")

Поскольку вы используете текстовые файлы, вы также можете сравнивать содержимое файла построчно.Проверьте LineNumberReader.readLine() для этого.

0 голосов
/ 06 января 2012

Когда вы регистрируете файл, вы можете сказать CVS, что это двоичный файл (cvs add -kb), и тогда CVS не будет преобразовывать окончания строк по пути.

Это также имеет другие недостатки, напримернет правильной разницы, но если вы действительно тестируете символ за символом, я думаю, вам это не нужно.

Обратите внимание, что вы должны указать -kb при добавлении файла, вы не сможете изменить его позже.

0 голосов
/ 06 января 2012

Вы можете удалить все символы '\ r' из загруженного файла? Или замените строку «\ r \ n» Windows на строку «\ n» Linux. Остерегайтесь также случая Mac: конец строки может быть идентифицирован как "\ r".

...