#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
текущего процесса.