UnmanagedMemoryStream.Write Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Overload
Write(ReadOnlySpan<Byte>) |
Menulis blok byte ke aliran memori yang tidak dikelola saat ini menggunakan data dari rentang byte yang disediakan. |
Write(Byte[], Int32, Int32) |
Menulis blok byte ke aliran saat ini menggunakan data dari buffer. |
Write(ReadOnlySpan<Byte>)
- Sumber:
- UnmanagedMemoryStream.cs
- Sumber:
- UnmanagedMemoryStream.cs
- Sumber:
- UnmanagedMemoryStream.cs
Menulis blok byte ke aliran memori yang tidak dikelola saat ini menggunakan data dari rentang byte yang disediakan.
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))
Parameter
- sourcebuffer
- ReadOnlySpan<Byte>
Rentang byte untuk menyalin byte ke aliran memori yang tidak dikelola saat ini.
Berlaku untuk
Write(Byte[], Int32, Int32)
- Sumber:
- UnmanagedMemoryStream.cs
- Sumber:
- UnmanagedMemoryStream.cs
- Sumber:
- UnmanagedMemoryStream.cs
Menulis blok byte ke aliran saat ini menggunakan data dari buffer.
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)
Parameter
- buffer
- Byte[]
Array byte tempat menyalin byte ke aliran saat ini.
- offset
- Int32
Offset dalam buffer untuk mulai menyalin byte ke aliran saat ini.
- count
- Int32
Jumlah byte yang akan ditulis ke aliran saat ini.
Pengecualian
Aliran ditutup.
Memori yang mendasar tidak mendukung penulisan.
-atau-
Upaya dilakukan untuk menulis ke aliran dan CanWrite properti adalah false
.
-atau-
Nilainya count
lebih besar dari kapasitas aliran.
-atau-
Posisi berada di akhir kapasitas aliran.
Terjadi kesalahan I/O.
Salah satu parameter yang ditentukan kurang dari nol.
Parameter offset
dikurangi panjang buffer
parameter kurang dari count
parameter .
Parameternya buffer
adalah null
.
Contoh
Contoh kode berikut menunjukkan cara membaca dari dan menulis ke memori yang tidak dikelola menggunakan UnmanagedMemoryStream kelas . Blok memori yang tidak dikelola dialokasikan dan dibatalkan alokasinya Marshal menggunakan kelas .
// 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();
}
}
Keterangan
Penulisan terjadi pada posisi saat ini di aliran.