MemoryStream Kelas
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.
Membuat aliran yang penyimpanan backing-nya adalah memori.
public ref class MemoryStream : System::IO::Stream
public class MemoryStream : System.IO.Stream
[System.Serializable]
public class MemoryStream : System.IO.Stream
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class MemoryStream : System.IO.Stream
type MemoryStream = class
inherit Stream
[<System.Serializable>]
type MemoryStream = class
inherit Stream
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MemoryStream = class
inherit Stream
Public Class MemoryStream
Inherits Stream
- Warisan
- Warisan
- Atribut
Contoh
Contoh kode berikut menunjukkan cara membaca dan menulis data menggunakan memori sebagai penyimpanan cadangan.
using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
int count;
array<Byte>^byteArray;
array<Char>^charArray;
UnicodeEncoding^ uniEncoding = gcnew UnicodeEncoding;
// Create the data to write to the stream.
array<Byte>^firstString = uniEncoding->GetBytes( "Invalid file path characters are: " );
array<Byte>^secondString = uniEncoding->GetBytes( Path::InvalidPathChars );
MemoryStream^ memStream = gcnew MemoryStream( 100 );
try
{
// Write the first string to the stream.
memStream->Write( firstString, 0, firstString->Length );
// Write the second string to the stream, byte by byte.
count = 0;
while ( count < secondString->Length )
{
memStream->WriteByte( secondString[ count++ ] );
}
// Write the stream properties to the console.
Console::WriteLine( "Capacity = {0}, Length = {1}, "
"Position = {2}\n", memStream->Capacity.ToString(), memStream->Length.ToString(), memStream->Position.ToString() );
// Set the stream position to the beginning of the stream.
memStream->Seek( 0, SeekOrigin::Begin );
// Read the first 20 bytes from the stream.
byteArray = gcnew array<Byte>(memStream->Length);
count = memStream->Read( byteArray, 0, 20 );
// Read the remaining bytes, byte by byte.
while ( count < memStream->Length )
{
byteArray[ count++ ] = Convert::ToByte( memStream->ReadByte() );
}
// Decode the Byte array into a Char array
// and write it to the console.
charArray = gcnew array<Char>(uniEncoding->GetCharCount( byteArray, 0, count ));
uniEncoding->GetDecoder()->GetChars( byteArray, 0, count, charArray, 0 );
Console::WriteLine( charArray );
}
finally
{
memStream->Close();
}
}
using System;
using System.IO;
using System.Text;
class MemStream
{
static void Main()
{
int count;
byte[] byteArray;
char[] charArray;
UnicodeEncoding uniEncoding = new UnicodeEncoding();
// Create the data to write to the stream.
byte[] firstString = uniEncoding.GetBytes(
"Invalid file path characters are: ");
byte[] secondString = uniEncoding.GetBytes(
Path.GetInvalidPathChars());
using(MemoryStream memStream = new MemoryStream(100))
{
// Write the first string to the stream.
memStream.Write(firstString, 0 , firstString.Length);
// Write the second string to the stream, byte by byte.
count = 0;
while(count < secondString.Length)
{
memStream.WriteByte(secondString[count++]);
}
// Write the stream properties to the console.
Console.WriteLine(
"Capacity = {0}, Length = {1}, Position = {2}\n",
memStream.Capacity.ToString(),
memStream.Length.ToString(),
memStream.Position.ToString());
// Set the position to the beginning of the stream.
memStream.Seek(0, SeekOrigin.Begin);
// Read the first 20 bytes from the stream.
byteArray = new byte[memStream.Length];
count = memStream.Read(byteArray, 0, 20);
// Read the remaining bytes, byte by byte.
while(count < memStream.Length)
{
byteArray[count++] = (byte)memStream.ReadByte();
}
// Decode the byte array into a char array
// and write it to the console.
charArray = new char[uniEncoding.GetCharCount(
byteArray, 0, count)];
uniEncoding.GetDecoder().GetChars(
byteArray, 0, count, charArray, 0);
Console.WriteLine(charArray);
}
}
}
Imports System.IO
Imports System.Text
Module MemStream
Sub Main()
Dim count As Integer
Dim byteArray As Byte()
Dim charArray As Char()
Dim uniEncoding As New UnicodeEncoding()
' Create the data to write to the stream.
Dim firstString As Byte() = _
uniEncoding.GetBytes("Invalid file path characters are: ")
Dim secondString As Byte() = _
uniEncoding.GetBytes(Path.GetInvalidPathChars())
Dim memStream As New MemoryStream(100)
Try
' Write the first string to the stream.
memStream.Write(firstString, 0 , firstString.Length)
' Write the second string to the stream, byte by byte.
count = 0
While(count < secondString.Length)
memStream.WriteByte(secondString(count))
count += 1
End While
' Write the stream properties to the console.
Console.WriteLine( _
"Capacity = {0}, Length = {1}, Position = {2}", _
memStream.Capacity.ToString(), _
memStream.Length.ToString(), _
memStream.Position.ToString())
' Set the stream position to the beginning of the stream.
memStream.Seek(0, SeekOrigin.Begin)
' Read the first 20 bytes from the stream.
byteArray = _
New Byte(CType(memStream.Length, Integer)){}
count = memStream.Read(byteArray, 0, 20)
' Read the remaining Bytes, Byte by Byte.
While(count < memStream.Length)
byteArray(count) = _
Convert.ToByte(memStream.ReadByte())
count += 1
End While
' Decode the Byte array into a Char array
' and write it to the console.
charArray = _
New Char(uniEncoding.GetCharCount( _
byteArray, 0, count)){}
uniEncoding.GetDecoder().GetChars( _
byteArray, 0, count, charArray, 0)
Console.WriteLine(charArray)
Finally
memStream.Close()
End Try
End Sub
End Module
Keterangan
Posisi aliran saat ini adalah posisi di mana operasi baca atau tulis berikutnya dapat berlangsung. Posisi saat ini dapat diambil atau diatur melalui metode Seek. Saat instans baru MemoryStream dibuat, posisi saat ini diatur ke nol.
Nota
Jenis ini mengimplementasikan antarmuka IDisposable, tetapi sebenarnya tidak memiliki sumber daya untuk dibuang. Ini berarti bahwa membuangnya dengan langsung memanggil Dispose() atau dengan menggunakan konstruksi bahasa seperti using
(dalam C#) atau Using
(di Visual Basic) tidak diperlukan.
Aliran memori yang dibuat dengan array byte yang tidak ditandatangani menyediakan aliran data yang tidak dapat diubah ukurannya. Saat menggunakan array byte, Anda tidak dapat menambahkan atau menyusutkan aliran, meskipun Anda mungkin dapat memodifikasi konten yang ada tergantung pada parameter yang diteruskan ke konstruktor. Aliran memori kosong dapat diubah ukurannya, dan dapat ditulis ke dan dibaca.
Jika objek MemoryStream ditambahkan ke file ResX atau file .resources, panggil metode GetStream saat runtime untuk mengambilnya.
Jika objek MemoryStream diserialisasikan ke file sumber daya, objek tersebut akan benar-benar diserialisasikan sebagai UnmanagedMemoryStream. Perilaku ini memberikan performa yang lebih baik, serta kemampuan untuk mendapatkan pointer ke data secara langsung, tanpa harus melalui metode Stream.
Konstruktor
MemoryStream() |
Menginisialisasi instans baru kelas MemoryStream dengan kapasitas yang dapat diperluas diinisialisasi menjadi nol. |
MemoryStream(Byte[]) |
Menginisialisasi instans baru yang tidak dapat diubah ukurannya dari kelas MemoryStream berdasarkan array byte yang ditentukan. |
MemoryStream(Byte[], Boolean) |
Menginisialisasi instans baru yang tidak dapat diubah ukurannya dari kelas MemoryStream berdasarkan array byte yang ditentukan dengan properti CanWrite yang ditetapkan sebagaimana ditentukan. |
MemoryStream(Byte[], Int32, Int32) |
Menginisialisasi instans baru yang tidak dapat diubah ukurannya dari kelas MemoryStream berdasarkan wilayah (indeks) array byte yang ditentukan. |
MemoryStream(Byte[], Int32, Int32, Boolean) |
Menginisialisasi instans baru yang tidak dapat diubah ukurannya dari kelas MemoryStream berdasarkan wilayah array byte yang ditentukan, dengan properti CanWrite ditetapkan sebagaimana ditentukan. |
MemoryStream(Byte[], Int32, Int32, Boolean, Boolean) |
Menginisialisasi instans baru kelas MemoryStream berdasarkan wilayah array byte yang ditentukan, dengan properti CanWrite ditetapkan sebagaimana ditentukan, dan kemampuan untuk memanggil GetBuffer() ditetapkan seperti yang ditentukan. |
MemoryStream(Int32) |
Menginisialisasi instans baru kelas MemoryStream dengan kapasitas yang dapat diperluas yang diinisialisasi seperti yang ditentukan. |
Properti
CanRead |
Mendapatkan nilai yang menunjukkan apakah aliran saat ini mendukung pembacaan. |
CanSeek |
Mendapatkan nilai yang menunjukkan apakah aliran saat ini mendukung pencarian. |
CanTimeout |
Mendapatkan nilai yang menentukan apakah aliran saat ini dapat kehabisan waktu. (Diperoleh dari Stream) |
CanWrite |
Mendapatkan nilai yang menunjukkan apakah aliran saat ini mendukung penulisan. |
Capacity |
Mendapatkan atau mengatur jumlah byte yang dialokasikan untuk aliran ini. |
Length |
Mendapatkan panjang aliran dalam byte. |
Position |
Mendapatkan atau mengatur posisi saat ini dalam aliran. |
ReadTimeout |
Mendapatkan atau menetapkan nilai, dalam milidetik, yang menentukan berapa lama aliran akan mencoba membaca sebelum waktu habis. (Diperoleh dari Stream) |
WriteTimeout |
Mendapatkan atau menetapkan nilai, dalam milidetik, yang menentukan berapa lama aliran akan mencoba menulis sebelum waktu habis. (Diperoleh dari Stream) |
Metode
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi baca asinkron. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32, CancellationToken) sebagai gantinya.) |
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi baca asinkron. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32, CancellationToken) sebagai gantinya.) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
Close() |
Menutup aliran untuk membaca dan menulis. |
Close() |
Menutup aliran saat ini dan merilis sumber daya apa pun (seperti soket dan handel file) yang terkait dengan aliran saat ini. Alih-alih memanggil metode ini, pastikan aliran dibuang dengan benar. (Diperoleh dari Stream) |
CopyTo(Stream) |
Membaca byte dari aliran saat ini dan menulisnya ke aliran lain. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyTo(Stream, Int32) |
Membaca byte dari aliran memori saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer yang ditentukan. |
CopyTo(Stream, Int32) |
Membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, CancellationToken) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan token pembatalan tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, Int32) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Secara asinkron membaca semua byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer dan token pembatalan yang ditentukan. |
CopyToAsync(Stream, Int32, CancellationToken) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer dan token pembatalan yang ditentukan. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CreateObjRef(Type) |
Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh. (Diperoleh dari MarshalByRefObject) |
CreateWaitHandle() |
Kedaluwarsa.
Kedaluwarsa.
Kedaluwarsa.
Mengalokasikan objek WaitHandle. (Diperoleh dari Stream) |
Dispose() |
Merilis semua sumber daya yang digunakan oleh Stream. (Diperoleh dari Stream) |
Dispose(Boolean) |
Merilis sumber daya yang tidak dikelola yang digunakan oleh kelas MemoryStream dan secara opsional merilis sumber daya terkelola. |
Dispose(Boolean) |
Merilis sumber daya yang tidak dikelola yang digunakan oleh Stream dan secara opsional merilis sumber daya terkelola. (Diperoleh dari Stream) |
DisposeAsync() |
Secara asinkron merilis sumber daya yang tidak dikelola yang digunakan oleh Stream. (Diperoleh dari Stream) |
EndRead(IAsyncResult) |
Menunggu pembacaan asinkron yang tertunda selesai. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32, CancellationToken) sebagai gantinya.) |
EndRead(IAsyncResult) |
Menunggu pembacaan asinkron yang tertunda selesai. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
EndWrite(IAsyncResult) |
Mengakhiri operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32, CancellationToken) sebagai gantinya.) |
EndWrite(IAsyncResult) |
Mengakhiri operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
Flush() |
Mengambil alih metode Flush() sehingga tidak ada tindakan yang dilakukan. |
FlushAsync() |
Secara asinkron menghapus semua buffer untuk aliran ini dan menyebabkan data yang di-buffer ditulis ke perangkat yang mendasar. (Diperoleh dari Stream) |
FlushAsync(CancellationToken) |
Secara asinkron menghapus semua buffer untuk aliran ini, dan memantau permintaan pembatalan. |
FlushAsync(CancellationToken) |
Secara asinkron menghapus semua buffer untuk aliran ini, menyebabkan data yang di-buffer ditulis ke perangkat yang mendasar, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
GetBuffer() |
Mengembalikan array byte yang tidak ditandatangani tempat aliran ini dibuat. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetLifetimeService() |
Kedaluwarsa.
Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini. (Diperoleh dari MarshalByRefObject) |
GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
InitializeLifetimeService() |
Kedaluwarsa.
Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini. (Diperoleh dari MarshalByRefObject) |
MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
MemberwiseClone(Boolean) |
Membuat salinan dangkal objek MarshalByRefObject saat ini. (Diperoleh dari MarshalByRefObject) |
ObjectInvariant() |
API ini mendukung infrastruktur produk dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. Menyediakan dukungan untuk Contract. |
ObjectInvariant() |
Kedaluwarsa.
Menyediakan dukungan untuk Contract. (Diperoleh dari Stream) |
Read(Byte[], Int32, Int32) |
Membaca blok byte dari aliran saat ini dan menulis data ke buffer. |
Read(Span<Byte>) |
Membaca urutan byte dari aliran memori saat ini dan memajukan posisi dalam aliran memori dengan jumlah byte yang dibaca. |
Read(Span<Byte>) |
Ketika ditimpa dalam kelas turunan, membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAsync(Byte[], Int32, Int32) |
Secara asinkron membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran memori saat ini, menulis urutan ke dalam |
ReadAsync(Memory<Byte>, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Membaca setidaknya jumlah minimum byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Secara asinkron membaca setidaknya jumlah minimum byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadByte() |
Membaca byte dari aliran saat ini. |
ReadExactly(Byte[], Int32, Int32) |
Membaca |
ReadExactly(Span<Byte>) |
Membaca byte dari aliran saat ini dan memajukan posisi dalam aliran hingga |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Membaca secara asinkron |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Membaca byte secara asinkron dari aliran saat ini, memajukan posisi dalam aliran hingga |
Seek(Int64, SeekOrigin) |
Mengatur posisi dalam aliran saat ini ke nilai yang ditentukan. |
SetLength(Int64) |
Mengatur panjang aliran saat ini ke nilai yang ditentukan. |
ToArray() |
Menulis konten aliran ke array byte, terlepas dari properti Position. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
TryGetBuffer(ArraySegment<Byte>) |
Mengembalikan array byte yang tidak ditandatangani tempat aliran ini dibuat. Nilai pengembalian menunjukkan apakah konversi berhasil. |
Write(Byte[], Int32, Int32) |
Menulis blok byte ke aliran saat ini menggunakan data yang dibaca dari buffer. |
Write(ReadOnlySpan<Byte>) |
Menulis urutan byte yang terkandung dalam |
Write(ReadOnlySpan<Byte>) |
Ketika ditimpa dalam kelas turunan, menulis urutan byte ke aliran saat ini dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis. (Diperoleh dari Stream) |
WriteAsync(Byte[], Int32, Int32) |
Secara asinkron menulis urutan byte ke aliran saat ini dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis. (Diperoleh dari Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Secara asinkron menulis urutan byte yang terkandung dalam |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
WriteByte(Byte) |
Menulis byte ke aliran saat ini pada posisi saat ini. |
WriteTo(Stream) |
Menulis seluruh isi aliran memori ini ke aliran lain. |
Implementasi Antarmuka Eksplisit
IDisposable.Dispose() |
Merilis semua sumber daya yang digunakan oleh Stream. (Diperoleh dari Stream) |
Metode Ekstensi
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Secara asinkron membaca byte dari Stream dan menulisnya ke PipeWriteryang ditentukan , menggunakan token pembatalan. |
AsInputStream(Stream) |
Mengonversi aliran terkelola di aplikasi .NET untuk Windows Store ke aliran input di Windows Runtime. |
AsOutputStream(Stream) |
Mengonversi aliran terkelola di aplikasi .NET untuk Windows Store ke aliran output di Windows Runtime. |
AsRandomAccessStream(Stream) |
Mengonversi aliran yang ditentukan ke aliran akses acak. |
GetWindowsRuntimeBuffer(MemoryStream) |
Mengembalikan antarmuka Windows.Storage.Streams.IBuffer yang mewakili memori yang sama dengan aliran memori yang ditentukan. |
GetWindowsRuntimeBuffer(MemoryStream, Int32, Int32) |
Mengembalikan antarmuka Windows.Storage.Streams.IBuffer yang mewakili wilayah dalam memori yang diwakili aliran memori yang ditentukan. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Mengonfigurasi bagaimana menunggu tugas yang dikembalikan dari asinkron sekali pakai akan dilakukan. |
Berlaku untuk
Lihat juga
- I/O File dan Stream
- Cara: Membaca Teks dari File
- Cara: Menulis Teks ke File