Как читать текстовые файлы, переданные в двоичном формате - PullRequest
0 голосов
/ 24 октября 2010

Мой код копирует файлы из ftp (используя режим передачи текста) на локальный диск и затем пытается их обработать.Все файлы содержат только текст, а значения разделены новой строкой.Иногда файлы перемещаются на этот ftp с использованием двоичного режима передачи, и похоже, что это испортит конец строки.Используя шестнадцатеричный редактор, я сравнил концы строк в зависимости от режима передачи, используемого для отправки файлов в ftp: используя текстовый режим: окончания файлов 0D 0A, используя двоичный режим: окончания файлов 0D 0D 0A

Можно ли изменить моикод, чтобы он мог читать файлы в обоих случаях?Код из работы, который иллюстрирует мою проблему и показывает, как я читаю файл: (здесь я использую тот же файл, который содержит 14 строк данных)

int         i;
container   con;
container   files = ["c:\\temp\\axa_keio\\ascii.txt", "c:\\temp\\axa_keio\\binary.txt"];

boolean     purchLineFirstRow;
IO          inFile;
;
for(i=1; i<=conlen(files); i++)
{
    inFile = new AsciiIO(conpeek(files,i), "R");
    inFile.inFieldDelimiter('\n');

    con = inFile.read();
    info(int2str(conlen(con)));
}

Файлы поступают из системы Unix в систему Windows.Не уверен, но, возможно, вопрос может быть следующим: «Какие значения inFieldDelimiter следует использовать для чтения концов строк Unix и Windows?»

1 Ответ

0 голосов
/ 18 ноября 2010

Использование inRecordDelimiter:

inFile.inRecordDelimiter('\n');

вместо:

inFile.inFieldDelimiter('\n');

В последнем поле все еще может быть висячий CR, вы можете удалить это:

strRem(conpeek(con, conlen(con)), '\r')

Смотри также: http://en.wikipedia.org/wiki/Line_endings

...