Как получить ввод и записать вывод из текстовых файлов в dart

#dart #stdout #stdin

#dart #стандартный вывод

Вопрос:

Как получить ввод из стандартного ввода (из текстового файла) и записать в стандартный вывод (в текстовый файл) в dart lang?

точно так же, как это в python

 import sys
sys.stdin = open('inp.txt','r')
sys.stdout = open('out.txt','w')
  

Ответ №1:

Я не уверен, почему вы используете stdin и stdout для чтения / записи файлов. Не могли бы вы объяснить немного больше?

В вашем примере содержимое "imp.txt" не записывается в файл "out.txt" .

Вы действительно можете записать все содержимое стандартного вывода в файл вместо консоли в python. Я не уверен, что вы можете сделать то же самое на DART.

 import sys
sys.stdout = open('out.txt','w')
print('test') # anything that goes to stdout will be written to the "out.txt"
  

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

dart dart_script.dart > out.txt

Для чтения содержимого из одного файла и записи в другой вы можете использовать класс File из модуля dart:io .

 import 'dart:io';

void main() {
  new File('inp.txt').readAsString().then((String contents) {
    new File('out.txt').writeAsString(contents);
  });
}
  

Чтобы сделать его более эффективным и лучше понять структуру, вы можете обрабатывать их как потоки

 import 'dart:io';

void main() {
  final inpFile = new File('inp.txt');
  Stream<List<int>> inputStream = inpFile.openRead();

  final outFile = new File('out.txt');
  IOSink outStream = outFile.openWrite();

  outStream.addStream(inputStream);
  outStream.close();
}
  

Стандартный вывод эквивалентен python sys.stdin , а стандартный вывод эквивалентен python sys.stdout .

Stdin является Stream . И он используется для чтения входных данных из командной строки. И File.openRead() Stream также возвращает a .

Итак, чтобы распечатать содержимое файла StdOut , вы можете использовать

 import 'dart:io';

void main() {
  final inpFile = new File('inp.txt');
  Stream<List<int>> inputStream = inpFile.openRead();

  stdout.addStream(inputStream); //print all contents of file to stdout
}
  

Ответ №2:

Я не верю dart:io , что библиотека Dart позволяет вам переопределять stdin или stdout way Python .

Вы можете запустить новый процесс с Process.start помощью, а затем выполнить запись в its stdin или прочитать из its stdout , но вы не можете изменить stdin / stdout текущего процесса.