Лучший способ получить базовые данные из MemoryStream? - PullRequest
0 голосов
/ 29 августа 2011

Байты записываются в объект MemoryStream, и необходимо получить базовый буфер для сохранения его в файл

MemoryStream ms = new MemoryStream();
// ms.Write(...)
// ms.Write(...)
// etc... some bytes are written to the stream

byte[] data = ms.GetBuffer();
int length = data.Length;

Однако возвращаемое значение data имеет ms емкость, а не реальную ms длину.

Лучше (быстрее, безопаснее, ...) установить емкость ms на ее длину или выделить data и скопировать в нее содержимое ms?

Ответы [ 3 ]

2 голосов
/ 29 августа 2011

GetBuffer () был разработан, чтобы избежать потенциально дорогого выделения массива.Вы можете использовать метод ToArray (), если вам нужен байт [] правильного размера.

2 голосов
/ 29 августа 2011

просто используйте метод-член ms.ToArray()

0 голосов
/ 05 ноября 2014

Когда вы не ищите случайные места, вы также можете использовать позицию потока:

Debug.Log("All length: " + (int)ms.Position);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...