Jika saya diberi kartu MemoryStream
yang saya tahu telah diisi dengan String
, bagaimana cara mendapatkan String
kembali?
.net
vb.net
string
memorystream
Brian
sumber
sumber
Jawaban:
Sampel ini menunjukkan cara membaca dan menulis string ke MemoryStream.
sumber
Anda juga bisa menggunakan
Saya tidak berpikir ini kurang efisien, tetapi saya tidak bisa bersumpah untuk itu. Ini juga memungkinkan Anda memilih penyandian yang berbeda, sedangkan menggunakan StreamReader Anda harus menentukan itu sebagai parameter.
sumber
OutOfMemoryException
s. MenggunakanStreamReader
bukan memecahkan masalah.00
di awal string.00 3C 3F
->.<?
di Hex Editor tapi di VS atau Notepad ++:<?
. Jadi Anda tidak dapat melihat perbedaannya bahkan jika Anda membandingkan string dengan mata, hanya alat perbandingan atau editor Hex yang akan menunjukkan perbedaannya. Jika Anda masih menggunakannya, pikirkan String.TrimStart. Lihat: docs.microsoft.com/en-us/dotnet/api/…Menggunakan StreamReader untuk mengubah MemoryStream menjadi sebuah String.
sumber
menggunakan StreamReader , maka Anda bisa menggunakan metode ReadToEnd yang mengembalikan string.
sumber
Basestream
seharusnya telah menetapkan Posisinya ke 0. SukamemoryStream.Position = 0;
.sumber
Solusi sebelumnya tidak akan berfungsi dalam kasus di mana penyandian terlibat. Inilah - semacam "kehidupan nyata" - contoh bagaimana melakukan ini dengan benar ...
sumber
Dalam hal ini, jika Anda benar-benar ingin menggunakan
ReadToEnd
metodeMemoryStream
dengan cara yang mudah, Anda dapat menggunakan Metode Ekstensi ini untuk mencapai ini:Dan Anda dapat menggunakan metode ini dengan cara ini:
sumber
Sampel ini menunjukkan cara membaca string dari MemoryStream, di mana saya telah menggunakan serialisasi (menggunakan DataContractJsonSerializer), meneruskan string dari beberapa server ke klien, dan kemudian, bagaimana memulihkan MemoryStream dari string yang dikirimkan sebagai parameter, kemudian , deserialize the MemoryStream.
Saya telah menggunakan bagian dari posting yang berbeda untuk melakukan sampel ini.
Semoga ini bisa membantu.
sumber
Versi yang sedikit dimodifikasi dari jawaban Brian memungkinkan manajemen opsional mulai membaca, Ini tampaknya menjadi metode termudah. mungkin bukan yang paling efisien, tetapi mudah dimengerti dan digunakan.
sumber
Mengapa tidak membuat metode ekstensi yang bagus pada tipe MemoryStream?
Tentu saja, berhati-hatilah saat menggunakan metode ini bersamaan dengan yang standar. :) ... Anda harus menggunakan streamLock yang praktis jika Anda melakukannya, untuk konkurensi.
sumber
Saya perlu mengintegrasikan dengan kelas yang membutuhkan Stream untuk Menulis di atasnya:
Saya membuat kelas sederhana yang dapat membantu mengurangi baris kode untuk penggunaan banyak:
maka Anda dapat mengganti sampel dengan satu baris kode
sumber