UnmanagedMemoryStream.Write Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
Write(ReadOnlySpan<Byte>) |
Zapíše blok bajtů do aktuálního nespravovaného datového proudu paměti pomocí dat z zadaného rozsahu bajtů. |
Write(Byte[], Int32, Int32) |
Zapíše blok bajtů do aktuálního datového proudu pomocí dat z vyrovnávací paměti. |
Write(ReadOnlySpan<Byte>)
- Zdroj:
- UnmanagedMemoryStream.cs
- Zdroj:
- UnmanagedMemoryStream.cs
- Zdroj:
- UnmanagedMemoryStream.cs
Zapíše blok bajtů do aktuálního nespravovaného datového proudu paměti pomocí dat z zadaného rozsahu bajtů.
public:
override void Write(ReadOnlySpan<System::Byte> source);
public:
override void Write(ReadOnlySpan<System::Byte> buffer);
public override void Write (ReadOnlySpan<byte> source);
public override void Write (ReadOnlySpan<byte> buffer);
override this.Write : ReadOnlySpan<byte> -> unit
override this.Write : ReadOnlySpan<byte> -> unit
Public Overrides Sub Write (source As ReadOnlySpan(Of Byte))
Public Overrides Sub Write (buffer As ReadOnlySpan(Of Byte))
Parametry
- sourcebuffer
- ReadOnlySpan<Byte>
Rozsah bajtů, ze kterého se mají kopírovat bajty do aktuálního nespravovaného datového proudu paměti.
Platí pro
Write(Byte[], Int32, Int32)
- Zdroj:
- UnmanagedMemoryStream.cs
- Zdroj:
- UnmanagedMemoryStream.cs
- Zdroj:
- UnmanagedMemoryStream.cs
Zapíše blok bajtů do aktuálního datového proudu pomocí dat z vyrovnávací paměti.
public:
override void Write(cli::array <System::Byte> ^ buffer, int offset, int count);
public override void Write (byte[] buffer, int offset, int count);
override this.Write : byte[] * int * int -> unit
Public Overrides Sub Write (buffer As Byte(), offset As Integer, count As Integer)
Parametry
- buffer
- Byte[]
Pole bajtů, ze kterého se mají kopírovat bajty do aktuálního datového proudu.
- offset
- Int32
Posun ve vyrovnávací paměti, při kterém se mají začít kopírovat bajty do aktuálního datového proudu.
- count
- Int32
Počet bajtů pro zápis do aktuálního datového proudu.
Výjimky
Datový proud se zavře.
Základní paměť nepodporuje zápis.
-nebo-
Dojde k pokusu o zápis do datového proudu a CanWrite vlastnost je false
.
-nebo-
Hodnota count
je větší než kapacita datového proudu.
-nebo-
Pozice je na konci kapacity streamu.
Dojde k vstupně-výstupní chybě.
Jeden ze zadaných parametrů je menší než nula.
Parametr offset
minus délka parametru buffer
je menší než count
parametr.
Parametr buffer
je null
.
Příklady
Následující příklad kódu ukazuje, jak číst z a zapisovat do nespravované paměti pomocí UnmanagedMemoryStream třídy. Blok nespravované paměti se přidělí a zruší přidělení pomocí Marshal třídy.
// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
unsafe class TestWriter
{
static void Main()
{
// Create some data to read and write.
byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some data.");
// Allocate a block of unmanaged memory and return an IntPtr object.
IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);
// Get a byte pointer from the IntPtr object.
byte* memBytePtr = (byte*)memIntPtr.ToPointer();
// Create an UnmanagedMemoryStream object using a pointer to unmanaged memory.
UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Write);
// Write the data.
writeStream.Write(message, 0, message.Length);
// Close the stream.
writeStream.Close();
// Create another UnmanagedMemoryStream object using a pointer to unmanaged memory.
UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Read);
// Create a byte array to hold data from unmanaged memory.
byte[] outMessage = new byte[message.Length];
// Read from unmanaged memory to the byte array.
readStream.Read(outMessage, 0, message.Length);
// Close the stream.
readStream.Close();
// Display the data to the console.
Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));
// Free the block of unmanaged memory.
Marshal.FreeHGlobal(memIntPtr);
Console.ReadLine();
}
}
Poznámky
Zápis probíhá na aktuální pozici v datovém proudu.