Копирует данные из текущего потока в другой поток. Дополнительно можно установить количество байтов, которые будут скопированы.
Синтаксис
КопироватьВ(<ЦелевойПоток>, <Количество>)Полное описание, параметры и ограничения
Поток.КопироватьВ (Stream.CopyTo)
Поток (Stream)
КопироватьВ (CopyTo)
Доступен, начиная с версии 8.3.9.
Синтаксис:
КопироватьВ(<ЦелевойПоток>, <Количество>)
Параметры:
<ЦелевойПоток> (обязательный)
Тип: Поток.
Поток, в который будет выполняться копирование.
<Количество> (необязательный)
Тип: Число.
Количество байтов, которые требуется скопировать в целевой поток. Если не задано, то будут скопированы все данные до конца текущего потока.
Возвращаемое значение:
Фактическое количество скопированных байтов.
Описание:
Копирует данные из текущего потока в другой поток.
Дополнительно можно установить количество байтов, которые будут скопированы.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер, интеграция.
См. также:
Поток, метод КопироватьВАсинх
Поток, метод НачатьКопированиеВ
Использование в версии:
Доступен, начиная с версии 8.3.9.
Описание изменено в версии 8.3.18.
Методическая информация
Практические примеры
Открыть собственные двоичные данные как поток чтения
ОткрытьПотокДляЧтения возвращает Поток с позицией в начале данных. Размер шесть байтов не означает, что курсор автоматически возвращается в начало перед копированием.
Где и как запускать
Серверная процедура учебной базы; собственные двоичные данные в памяти, без файлов.
Подготовка
Используйте отдельную учебную базу. Фрагмент без директив вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.
Все исходные байты создаются самим примером в памяти. Файлы, сеть, справочники и документы не нужны.
Запускайте задачи отдельно. После закрытия ЧтениеДанных/ЗаписьДанных не используйте этот экземпляр повторно.
Данные = ПолучитьДвоичныеДанныеИзСтроки("ABC123", КодировкаТекста.UTF8, Ложь);
Поток = Данные.ОткрытьПотокДляЧтения();
Вид = Неопределено;
Копия = Неопределено;
Попытка
Сообщить(Поток.ДоступноЧтение);
Сообщить(Не Поток.ДоступнаЗапись);
Сообщить(Поток.ДоступноИзменениеПозиции);
Сообщить(Поток.ТекущаяПозиция() = 0);
Сообщить(Поток.Размер() = 6);
Первые = Новый БуферДвоичныхДанных(2);
Сообщить(Поток.Прочитать(Первые, 0, 2) = 2);
Сообщить(ПолучитьСтрокуИзБуфераДвоичныхДанных(Первые, КодировкаТекста.UTF8) = "AB");
Копия = Новый ПотокВПамяти;
Сообщить(Поток.КопироватьВ(Копия) = 4);
Хвост = Копия.ЗакрытьИПолучитьДвоичныеДанные();
Копия = Неопределено;
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Хвост, КодировкаТекста.UTF8) = "C123");
Сообщить(Поток.ТекущаяПозиция() = 6);
Сообщить(Поток.Перейти(0, ПозицияВПотоке.Начало) = 0);
Исключение
Если Вид <> Неопределено Тогда
Вид.Закрыть();
КонецЕсли;
Если Копия <> Неопределено Тогда
Копия.Закрыть();
КонецЕсли;
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Если Вид <> Неопределено Тогда
Вид.Закрыть();
КонецЕсли;
Если Копия <> Неопределено Тогда
Копия.Закрыть();
КонецЕсли;
Поток.Закрыть();Разбор по шагам
Кодирование ASCII без BOM создаёт неизменяемые шесть байтов в памяти.
Проверяем доступность чтения/изменения позиции и отсутствие доступа к записи.
Прочитать забирает AB, КопироватьВ без количества копирует только оставшийся C123.
После копирования курсор 6; возвращаем его в начало отдельным Перейти. Оба потока закрываются.
Как проверить результат
Одиннадцать сравнений Истина; прочитано 2, скопировано 4.
На диске не появился файл, исходные ДвоичныеДанные по-прежнему ABC123.
Ожидаемый результат
Разобран реальный базовый Поток, полученный из своих ДвоичныеДанные.
На что обратить внимание
КопироватьВ не возвращает ДвоичныеДанные: результат — количество скопированных байтов.
Для кириллицы два байта не обязательно равны двум символам. Здесь намеренно ASCII.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.