Dart: печатать новую строку без возврата каретки в Windows?

Я пытаюсь вывести текст с окончаниями строк * nix из Windows dart vm, и, похоже, он всегда заменяет \n на \r\n:

#!/usr/bin/env dart

# foo.dart

import 'dart:io';

main() {
  stdout.write('a\nb\nc\n');
  stdout.write('a\x0Ab\x0Ac\x0A');
}

Вот что я получаю при запуске из cygwin

$ foo.dart | foo.txt
$ cat -A foo.txt
a^M$
b^M$
c^M$
a^M$
b^M$
c^M$

Есть ли способ вывести текст без автоматической вставки возврата каретки?


person Sean Eagan    schedule 09.06.2014    source источник


Ответы (1)


Проблема в том, что stdout по умолчанию открывается в текстовом режиме, в котором сама Windows автоматически конвертирует LF в CRLF.

Если бы это был C/C++, вообще говоря, вы сможете переключить стандартный вывод в двоичный режим с помощью _setmode (см. как C выводить LF на стандартный вывод без изменения на CR LF?).

В Dart у вас нет доступа к этой функции API.

Я бы поднял запрос на это на dartbug.com/new.

person aam    schedule 10.06.2014