2012-05-13 7 views
2

У меня есть MemoryStream, который создается из файла во время выполнения.Как заполнить MemoryStream байтами 0xFF?

Затем редактируется MemoryStream и удаляются некоторые байты.

Теперь я должен поддерживать Constant Размер файла, так что я должен заполнить MemoryStream с 0xFF байт ..

что это самый быстрый способ сделать эту операцию?

Я знаю, что я всегда могу прокручивать размеры MemoryStream и добавлять 0xFF, но мне нужно знать более быстрый и эффективный способ сделать это!

+0

Если вы хотите производительность, то я хотел бы использовать массив байтов вместо поток памяти – thumbmunkeys

+0

AFAIK, 'MemoryStream' = Манипуляция потоком' ByteArray'..Со производительности не сильно затруднено – Writwick

+0

Нужно ли поддерживать постоянный размер файла в памяти? Или размер файла имеет значение только в том случае, если вы перезаписываете MemoryStream на диск? – Hans

ответ

3

Если у вас есть много байтов для записи в поток, это может быть более эффективным, чтобы написать массив, а не каждый байт по отдельности:

static void Fill(this Stream stream, byte value, int count) 
{ 
    var buffer = new byte[64]; 
    for (int i = 0; i < buffer.Length; i++) 
    { 
     buffer[i] = value; 
    } 
    while (count > buffer.Length) 
    { 
     stream.Write(buffer, 0, buffer.Length); 
     count -= buffer.Length; 
    } 
    stream.Write(buffer, 0, count); 
} 
+0

В строке 10 "' stream.Write (buffer , 0, buffer.Length); '", почему 0 в смещении ?? Байты должны быть добавлены в конец потока! – Writwick

+0

См. Документацию по [Метод Stream.Write] (http://msdn.microsoft.com/en-us/library/system.io.stream.write.aspx). – dtb

+0

О! Не знал, что смещение находится в буфере! [Я никогда раньше не использовал метод Write!] – Writwick

Смежные вопросы