Окна возврата каретки и перевода строки и Java-приложение для Linux

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

Проблема в том, что этот тестовый пример дает сбой, когда он запускается в системе Linux, причина в том, что файл, который хранится в cvs, был зарегистрирован в системе Windows, которая содержит CRLF в качестве окончания строки, тогда как сгенерированный выходной файл имеет завершение строки как CR, теперь, когда я читаю эти файлы и сравниваю их посимвольно, у них несоответствие.

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


person flash    schedule 06.01.2012    source источник


Ответы (4)


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

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

person Gijs Overvliet    schedule 06.01.2012

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

List<String> file1 = FileUtils.readLines(...);
List<String> file2 = FileUtils.readLines(...);
return file1.equals(file2);
person Mikita Belahlazau    schedule 06.01.2012

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

person Guillaume    schedule 06.01.2012

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

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

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

person GreyFairer    schedule 06.01.2012