Поток - длина контентаC#

Место общения программистов C#
Ответить
Anonymous
 Поток - длина контента

Сообщение Anonymous »

Независимо от того, чтобы получить длину контента, в настоящее время удерживаемого потоком?public class Solution {

public static void Main(string[] args)
{
var raw = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5 };
using (var stream = new MemoryStream(3)) {
long size = stream.Length; // Actual 0, expected 0
long capacity = stream.Capacity; // Actual 3, expected 3
long position = stream.Position; // Actual 0, expected 0

stream.Write(raw, 0, raw.Length);
size = stream.Length; // Actual 6, expected 6
capacity = stream.Capacity; // Actual 256, expected big enough to hold content
position = stream.Position; // Actual 6, expected 6

var buffer = new byte[1];
stream.Read(buffer, 0, 1);
size = stream.Length; // Actual 6, expected 5
capacity = stream.Capacity; // Actual 256, expected same as before
position = stream.Position; // Actual 6, expected 5

stream.Write(raw, 0, raw.Length);
size = stream.Length; // Actual 12, expected 11
capacity = stream.Capacity; // Actual 256, expected same as before
position = stream.Position; // Actual 12, expected 11

stream.Seek(0, 0);
size = stream.Length; // Actual 12, expected 11
position = stream.Position; // Actual 0, expected 0
}
}
}
< /code>

Я ожидаю, что чтение уменьшит размер на 1. По -видимому, нет. Это поднимает вопрос, тогда, если байт сохраняется в памяти, и длина сообщается, включая чтения байтов, когда он удаляется из памяти? (Мы не можем накапливаться вечно!) И как мы получаем длину текущего контента? (Всего написано байты - общее количество байтов)? Позиция разделяется для чтения и пишет. Однако другие вопросы все еще остаются.

Подробнее здесь: https://stackoverflow.com/questions/524 ... of-content
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»