перевод строки не работает после экспорта файла .txt на сервер sFTP - PullRequest
0 голосов
/ 07 декабря 2018

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

Используется System.lineSeparator () и \ r \ n, \ r, а также другие примеры, но файл все еще настраивается

IФайл с данными должен выглядеть следующим образом:

               test|test|test|test       
               test|test|test|test    
               test|test|test|test    

Но после загрузки он выглядит следующим образом:

test | test | test | test test | test |test | test | test | test | test | test | test | test test | test | test | test

Я использую сервер Tomcat и Java 8 в среде Linux.

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

FTP печально известен тем, что строка Windows, оканчивающаяся \r\n, может быть преобразована в строку Unix, оканчивающуюся \n, если файл не передан как двоичные данные (в отличие от text ).

В Windows текстовый файл с \n будет не рассматриваться как разделитель строк в простых текстовых редакторах, таких как Блокнот.

Используйте другой редактор, напримерNotepad ++ или JEdit.

Итак

  • На FTP используется бинарная передача
  • Использование редактора программиста

Там также есть простая ошибкагде строки читаются, а текст состоит из этих строк, забывая пропущенные новые строки:

StringBuilder fileContent = new StringBuilder();
BufferedReader in = new BufferedReader(...);
for (;;) {
    String line = in.readLine(); // No line ending!
    if (line == null) {
        break;
    }
    fileContent.append(line); // Forgotten: `.append("\r\n")`
 }
 return fileContent.toString();

Итак

  • Проверьте код чтения
0 голосов
/ 07 декабря 2018

Есть разрывы строк, однако разные операционные системы распознают разные последовательности для разрывов строк.

Блокнот распознает только CR, LF (0x0d, 0x0a), тогда как другие источники могут использовать только CR или только LF.

Нельзя заставить Блокнот вести себя по-другому, поэтому единственный вариант - убедиться, что содержимое имеет правильную последовательность для Блокнота.Обратите внимание, что блокнот является единственным редактором с этим ограничением, поэтому, если ваш контент работает в Блокноте, он будет работать везде.

Один простой способ исправить перевод строки - это скопировать и вставить текст в Word,затем снова вернитесь в блокнот, и переводы строк будут «исправлены» в последовательности CR, LF.

Также вы можете использовать другие текстовые редакторы, такие как notepad ++, sublime и т. д. Для получения дополнительной информации посетите здесь

0 голосов
/ 07 декабря 2018

вы должны попробовать:

public static String newline = System.getProperty("line.separator");

, если это не сработает, это "\", что может быть проблемой здесь, вы можете попробовать удвоить его

первымговорят, что второй не компьютерный тег

...