Spec-Zone.ru › Dart 1

Библиотека dart:io

Поддержка файлов, сокетов, HTTP и других операций ввода-вывода для серверных приложений.

Библиотека I/O используется для Dart серверных приложений, которые выполняются в автономной Dart VM из командной строки. Эта библиотека не работает в приложениях, основанных на браузере.

Эта библиотека позволяет работать с файлами, каталогами, сокетами, процессами, HTTP серверами и клиентами и многим другим.

Чтобы использовать эту библиотеку в вашем коде:

import 'dart:io';

Примечание: Многие операции, связанные с вводом-выводом, являются асинхронными и обрабатываются с помощью Future или Stream, оба из которых определены в dart:async библиотеке.

Файлы, каталоги и ссылки

Экземпляр File, Directory или Link соответственно представляет файл, каталог или ссылку в родной файловой системе.

Вы можете управлять файловой системой с помощью объектов этих типов. Например, вы можете переименовать файл или каталог:

File myFile = new File('myFile.txt');
myFile.rename('yourFile.txt').then((_) => print('file renamed'));

Многие методы классов File, Directory и Link работают асинхронно и возвращают Future.

FileSystemEntity

File, Directory и Link все расширяют FileSystemEntity. Помимо того, что это суперкласс для этих классов, FileSystemEntity имеет ряд статических методов для работы с путями.

Чтобы получить информацию о пути, вы можете использовать статические методы FileSystemEntity, такие как 'isDirectory', 'isFile' и 'exists'. Поскольку доступ к файловой системе включает в себя ввод-вывод, эти методы являются асинхронными и возвращают Future.

FileSystemEntity.isDirectory(myPath).then((isDir) {
  if (isDir) {
    print('$myPath is a directory');
  } else {
    print('$myPath is not a directory');
  }
});

HttpServer и HttpClient

Классы HttpServer и HttpClient предоставляют функциональность HTTP сервера и HTTP клиента.

Класс HttpServer предоставляет базовые возможности для реализации HTTP сервера. Для некоторых более высоких уровней построения блоков мы рекомендуем использовать пакет pub shelf, который содержит набор классов высокого уровня, которые вместе с классом HttpServer в этой библиотеке упрощают реализацию HTTP серверов.

Process

Класс Process предоставляет способ запуска процесса на родной машине. Например, следующий код запускает процесс, который рекурсивно перечисляет файлы в web.

Process.start('ls', ['-R', 'web']).then((process) {
  stdout.addStream(process.stdout);
  stderr.addStream(process.stderr);
  process.exitCode.then(print);
});

Использование start() возвращает Future, которое завершается объектом Process, когда процесс запущен. Этот объект Process позволяет взаимодействовать с процессом во время его работы. Использование run() возвращает Future, которое завершается объектом ProcessResult, когда запущенный процесс завершен. Этот объект ProcessResult собирает вывод и код выхода из процесса.

При использовании start(), необходимо прочитать все данные, поступающие по потокам stdout и stderr, иначе системные ресурсы не будут освобождены.

WebSocket

Класс WebSocket предоставляет поддержку протокола WebSocket. Это позволяет осуществлять двустороннюю связь между клиентским и серверным приложениями. Используйте класс WebSocket в библиотеке dart:html для веб-клиентов.

Веб-сокет-сервер использует обычный HTTP-сервер для принятия соединений WebSocket. Первоначальный обмен данными — это HTTP-запрос, который затем обновляется до соединения WebSocket. Сервер обновляет запрос с помощью WebSocketTransformer и прослушивает данные на возвращённом веб-сокете. Например, вот мини-сервер, который прослушивает данные 'ws' в WebSocket:

runZoned(() {
  HttpServer.bind('127.0.0.1', 4040).then((server) {
    server.listen((HttpRequest req) {
      if (req.uri.path == '/ws') {
        WebSocketTransformer.upgrade(req).then((socket) {
          socket.listen(handleMsg);
        });
      }
    });
  });
},
onError: (e) => print("An error occurred."));

Клиент подключается к WebSocket с помощью метода connect() и URI, использующего протокол WebSocket. Клиент может записывать в WebSocket с помощью метода add(). Например,

WebSocket.connect('ws://127.0.0.1:4040/ws').then((socket) {
  socket.add('Hello, World!');
});

Обратите внимание на пример dartiverse_search для пары клиент/сервер, которая использует WebSockets для связи.

Socket и ServerSocket

Клиенты и серверы используют Socket для связи с использованием протокола TCP. Используйте ServerSocket на стороне сервера и Socket на стороне клиента. Сервер создает сокет прослушивания с помощью метода bind() и затем прослушивает входящие подключения к сокету. Например:

ServerSocket.bind('127.0.0.1', 4041)
  .then((serverSocket) {
    serverSocket.listen((socket) {
      socket.transform(UTF8.decoder).listen(print);
    });
  });

Клиент подключает сокет с помощью метода connect(), который возвращает Future. Использование write(), writeln(), или writeAll() — это самые простые способы отправки данных по сокету. Например:

Socket.connect('127.0.0.1', 4041).then((socket) {
  socket.write('Hello, World!');
});

Помимо Socket и ServerSocket, доступны классы RawSocket и RawServerSocket для доступа к низкоуровневому асинхронному сокетному вводу-выводу.

Потоки стандартного вывода, ошибок и ввода

Эта библиотека предоставляет потоки стандартного вывода, ошибок и ввода, имеющие имена 'stdout', 'stderr' и 'stdin' соответственно.

Потоки stdout и stderr оба являются IOSink и имеют одинаковый набор методов и свойств.

Чтобы записать строку в 'stdout':

stdout.writeln('Hello, World!');

Чтобы записать список объектов в 'stderr':

stderr.writeAll([ 'That ', 'is ', 'an ', 'error.', '\n']);

Поток стандартного ввода — это настоящий Stream, поэтому он наследует свойства и методы из класса Stream.

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

 String inputText = stdin.readLineSync();

Другие ресурсы

Для ознакомления с вводом-выводом в Dart см. раздел dart:io в туре по библиотеке.

Чтобы узнать больше о вводе-выводе в Dart, обратитесь к туториалу о написании командных приложений.

Константы

APPEND → dynamic

Режим открытия файла для чтения и записи в конец. Файл создается, если он еще не существует.

FileMode.APPEND
GZIP → GZipCodec

Экземпляр по умолчанию реализации GZipCodec.

const GZipCodec._default()
READ → dynamic

Режим открытия файла только для чтения.

FileMode.READ
SYSTEM_ENCODING → SystemEncoding

Текущее кодирование системы.

const SystemEncoding()
WRITE → dynamic

Режим открытия файла для чтения и записи. Файл перезаписывается, если он уже существует. Файл создается, если он еще не существует.

FileMode.WRITE
WRITE_ONLY → dynamic

Режим открытия файла только для записи. Файл перезаписывается, если он уже существует. Файл создается, если он еще не существует.

FileMode.WRITE_ONLY
WRITE_ONLY_APPEND → dynamic

Режим открытия файла только для записи в конец. Файл создается, если он еще не существует.

FileMode.WRITE_ONLY_APPEND
ZLIB → ZLibCodec

Экземпляр по умолчанию реализации ZLibCodec.

const ZLibCodec._default()

Типы

BadCertificateCallback(X509Certificate cr, String host, int port) → bool

Свойства

exitCode → int
чтение/запись

Получение глобального кода завершения для Dart VM.

pid → int
только для чтения

Возвращает PID текущего процесса.

stderr → Stdout
только для чтения

Поток стандартного вывода ошибок, записанных этой программой.

stdin → Stdin
только для чтения

Поток стандартного ввода, считываемый этой программой.

stdout → Stdout
только для чтения

Поток стандартного вывода, записываемый этой программой.

Функции

exit(int code) → void

Немедленно завершить процесс Dart VM с заданным кодом завершения.

sleep(Duration duration) → void

Засыпать на указанный в duration срок.

stdioType(object) → StdioType

Для потока возвращает, подключен ли он к файлу, каналу, терминалу или чему-то другому.

Перечисления

FileLock

Тип блокировки при запросе блокировки файла.

ProcessStartMode

Режимы запуска нового процесса.

Классы

BytesBuilder

Создаёт список байтов, позволяя добавлять байты и списки байтов в конец.

CompressionOptions

Класс CompressionOptions позволяет управлять параметрами сжатия WebSocket.

ContentType

Представление типа контента. Экземпляр ContentType неизменяем.

Cookie

Представление cookie. Для cookie, полученных сервером как значения заголовка Cookie, будут установлены только поля name и value. При создании cookie для заголовка «set-cookie» на сервере и при получении cookie в клиенте как заголовков «set-cookie» можно использовать все поля.

Datagram

Пакет Datagram. Данные, отправляемые и получаемые с помощью сокетов Datagram, содержат интернет-адрес и порт назначения или источника вместе с данными.

DetachedSocket

При отделении сокета от HttpServer или HttpClient из-за обновления HTTP-соединения могут быть уже прочитанные непрочитанные данные из сокета. Эти непрочитанные данные вместе с отсоединённым сокетом возвращаются в экземпляре этого класса.

Directory

Ссылка на каталог (или папку) в файловой системе.

File

Ссылка на файл в файловой системе.

FileMode

Режимы открытия файла.

FileStat

Объект FileStat представляет результат вызова функции POSIX stat() для объекта файловой системы. Это неизменяемый объект, представляющий значения, сфотографированные вызовом stat().

FileSystemCreateEvent

Событие файловой системы для вновь созданных объектов файловой системы.

FileSystemDeleteEvent

Событие файловой системы для удаления объектов файловой системы.

FileSystemEntity

Базовый класс для File, Directory и Link.

FileSystemEntityType

Тип сущности в файловой системе, такой как файл, каталог или ссылка.

FileSystemEvent

Базовый класс событий, испускаемых FileSystemEntity.watch.

FileSystemModifyEvent

Событие файловой системы для изменений объектов файловой системы.

FileSystemMoveEvent

Событие файловой системы для перемещения объектов файловой системы.

GZipCodec

Кодек GZipCodec кодирует сырые байты в сжатые байты GZip и декодирует сжатые байты GZip в сырые байты.

HeaderValue

Представление значения заголовка в формате:

HttpClient

Клиент, получающий контент, такой как веб-страницы, от сервера с использованием протокола HTTP.

HttpClientBasicCredentials

Представляет данные для аутентификации по протоколу Basic.

HttpClientCredentials
HttpClientDigestCredentials

Представляет данные для аутентификации по протоколу Digest. Аутентификация по протоколу Digest поддерживается только для серверов, использующих алгоритм MD5 и уровень защиты (qop) «none» или «auth».

HttpClientRequest

HTTP-запрос для подключения клиента.

HttpClientResponse

HTTP-ответ для подключения клиента.

HttpConnectionInfo

Информация об подключении HttpRequest, HttpResponse, HttpClientRequest или HttpClientResponse.

HttpConnectionsInfo

Статистические данные о текущих подключениях сокетов HttpServer.

HttpDate

Утилиты для работы с датами с использованием форматов дат HTTP.

HttpHeaders

Заголовки для HTTP-запросов и ответов.

HttpRequest

Объект на стороне сервера, содержащий контент и информацию об HTTP-запросе.

HttpResponse

HTTP-ответ, который возвращает заголовки и данные с сервера клиенту в ответ на HTTP-запрос.

HttpServer

Сервер, который предоставляет контент, такой как веб-страницы, с использованием протокола HTTP.

HttpSession
HttpStatus

HTTP-коды состояния.

InternetAddress

Интернет-адрес.

InternetAddressType

Тип InternetAddressType — это тип InternetAddress. В настоящее время поддерживаются IP-версия 4 (IPv4) и IP-версия 6 (IPv6).

IOSink

Объединённый байтовый и текстовый вывод.

Link

Объекты Link — это ссылки на ссылки файловой системы.

NetworkInterface

Объект NetworkInterface представляет активный сетевой интерфейс текущей системы. Он содержит список InternetAddresses, привязанных к интерфейсу.

OSError

Объект OSError содержит информацию об ошибке операционной системы.

Platform

Информация об среде, в которой выполняется текущая программа.

Process

Средство выполнения программы.

ProcessInfo

ProcessInfo предоставляет методы для получения информации о текущем процессе.

ProcessResult

ProcessResult представляет результат выполнения неинтерактивного процесса, запущенного с помощью Process.run или Process.runSync.

ProcessSignal

В системах Posix ProcessSignal используется для отправки определенного сигнала дочернему процессу, см. Process.kill.

RandomAccessFile

RandomAccessFile обеспечивает произвольный доступ к данным в файле.

RawDatagramSocket

RawDatagramSocket — это низкоуровневый интерфейс к UDP-сокету, предоставляющий доступ к сырым событиям, сигнализируемым системой. Это поток Stream объектов RawSocketEvent.

RawSecureServerSocket

RawSecureServerSocket — это серверный сокет, предоставляющий поток низкоуровневых объектов RawSecureSocket.

RawSecureSocket

RawSecureSocket предоставляет защищенное (SSL или TLS) сетевое соединение. Клиентские подключения к серверу предоставляются вызовом RawSecureSocket.connect. Защищенный сервер, созданный с помощью RawSecureServerSocket, также возвращает объекты RawSecureSocket, представляющие серверную часть защищенного соединения. Сертификат, предоставленный сервером, проверяется с использованием надёжных сертификатов, установленных в объекте SecurityContext. В стандартном объекте SecurityContext содержится встроенный набор надёжных корневых сертификатов для известных сертификационных центров.

RawServerSocket

RawServerSocket представляет сокет прослушивания и предоставляет поток низкоуровневых объектов RawSocket для каждого подключенного соединения.

RawSocket

RawSocket — это низкоуровневый интерфейс к сокету, предоставляющий доступ к сырым событиям, сигнализируемым системой. Это поток Stream объектов RawSocketEvent.

RawSocketEvent

События для RawSocket.

RawSynchronousSocket

Низкоуровневый класс для синхронного общения через TCP-сокет.

RedirectInfo

Информация о перенаправлении.

SecureServerSocket

SecureServerSocket — это серверный сокет, предоставляющий поток высокоуровневых объектов Socket.

SecureSocket

Высокоуровневый класс для безопасного общения по TCP-сокету с использованием TLS и SSL. Класс SecureSocket предоставляет как интерфейс Stream, так и IOSink, что делает его идеальным для использования вместе с другими потоками Stream.

SecurityContext

Объект, содержащий сертификаты, которым следует доверять при установлении защищённого клиентского соединения, и цепочку сертификатов и закрытый ключ для предоставления защищённого сервера.

ServerSocket

Класс ServerSocket представляет сокет для прослушивания и предоставляет поток объектов Socket, по одному для каждого подключения к сокету для прослушивания.

Socket

Высокоуровневый класс для общения по TCP-сокету.

SocketDirection

Класс SocketDirection используется в качестве параметра для Socket.close и RawSocket.close для закрытия сокета в указанном направлении(ях).

SocketOption

Класс SocketOption используется в качестве параметра для Socket.setOption и RawSocket.setOption для настройки поведения базового сокета.

Stdin

Класс Stdin позволяет выполнять синхронные и асинхронные чтение со стандартного потока ввода.

StdioType

Тип объекта, к которому подключён стандартный поток ввода-вывода.

Stdout

Класс Stdout представляет IOSink для либо stdout или stderr.

SystemEncoding

Кодировка системы — это текущая кодовая страница в Windows и UTF-8 в Linux и macOS.

WebSocket

Объект двусторонней HTTP-связи для клиентских или серверных приложений.

WebSocketStatus

Коды состояния WebSocket, используемые при закрытии подключения WebSocket.

WebSocketTransformer

Класс WebSocketTransformer предоставляет возможность модернизировать HttpRequest до подключения WebSocket. Он поддерживает как модернизацию одного HttpRequest, так и модернизацию потока HttpRequest.

X509Certificate

X509Certificate представляет сертификат SSL с доступами для получения полей сертификата.

ZLibCodec

Класс ZLibCodec кодирует сырые байты в сжатые байты ZLib и декодирует сжатые байты ZLib в сырые байты.

ZLibDecoder

Класс ZLibDecoder используется классами ZLibCodec и GZipCodec для распаковки данных.

ZLibEncoder

Кодировщик ZLibEncoder используется классами ZLibCodec и GZipCodec для сжатия данных.

ZLibOption

Предоставляет параметры ZLib для входных параметров.

Исключения / Ошибки

CertificateException

Исключение, возникающее на стадии рукопожатия при установлении защищённого сетевого соединения, при поиске или проверке сертификата.

FileSystemException

Исключение, генерируемое при неудачном выполнении операции с файлами.

HandshakeException

Исключение, возникающее на стадии рукопожатия при установлении защищённого сетевого соединения.

HttpException
IOException

Базовый класс для всех исключений, связанных с вводом-выводом.

ProcessException
RedirectException
SignalException
SocketException
StdinException
StdoutException
TlsException

Исключение, связанное с безопасной сетью, вызванное ошибкой в протоколе TLS/SSL.

WebSocketException

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/dart-io-library.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API