Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
779 of 1492 menu
◀ ▶

Метод CopyTo

Stream.CopyTo(destination) читает от текущей Position до конца и пишет в destination. Перед вызовом позицию задают через Seek. FileStream и MemoryStream ведут себя одинаково по контракту Stream. Есть CopyToAsync.

Синтаксис

stream.CopyTo(destination); stream.CopyTo(destination, bufferSize);

Пример

Давайте скопируем все пять байт в новый MemoryStream:

using System; using System.IO; class Program { static void Main() { using var src = new MemoryStream(); src.Write([1, 2, 3, 4, 5], 0, 5); src.Position = 0; using var dst = new MemoryStream(); src.CopyTo(dst); long res = dst.Length; Console.WriteLine(res); } }

Результат выполнения кода:

5

Пример

Давайте копировать только с середины - сначала сдвинем позицию:

using System; using System.IO; class Program { static void Main() { using var src = new MemoryStream(); src.Write([1, 2, 3, 4, 5], 0, 5); src.Seek(2, SeekOrigin.Begin); using var dst = new MemoryStream(); src.CopyTo(dst); long res = dst.Length; Console.WriteLine(res); } }

Результат выполнения кода:

3

Пример

Давайте проверим первый байт в приёмнике:

using System; using System.IO; class Program { static void Main() { using var src = new MemoryStream(); src.Write([1, 2, 3, 4, 5], 0, 5); src.Position = 0; using var dst = new MemoryStream(); src.CopyTo(dst); dst.Position = 0; byte[] buf = new byte[1]; dst.Read(buf, 0, 1); int res = buf[0]; Console.WriteLine(res); } }

Результат выполнения кода:

1

Смотрите также

  • метод Read,
    который читает порциями вручную
  • метод Write,
    который пишет в приёмник
  • метод Flush,
    который сбрасывает буфер приёмника
  • File.Open,
    который открывает поток из файла
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить