Wenn ich ein bestimmtes bin , MemoryStream
dass ich weiß , hat mit einem besiedelt String
, wie bekomme ich einen String
wieder aus?
.net
vb.net
string
memorystream
Brian
quelle
quelle
Antworten:
Dieses Beispiel zeigt, wie Sie einen String in einen MemoryStream lesen und schreiben.
quelle
Sie können auch verwenden
Ich denke nicht, dass dies weniger effizient ist, aber ich konnte es nicht schwören. Außerdem können Sie eine andere Codierung auswählen, während Sie bei Verwendung eines StreamReader diese als Parameter angeben müssen.
quelle
OutOfMemoryException
s. Die Verwendung einesStreamReader
stattdessen löste das Problem.00
am Anfang der Zeichenfolge enthalten sein.00 3C 3F
->.<?
im Hex-Editor, aber in VS oder Notepad ++ :<?
. Sie können den Unterschied also nicht erkennen, selbst wenn Sie die Zeichenfolgen mit dem Auge vergleichen. Nur ein Vergleichstool oder ein Hex-Editor zeigen den Unterschied an. Wenn Sie es weiterhin verwenden, denken Sie an String.TrimStart. Siehe: docs.microsoft.com/en-us/dotnet/api/…Verwenden eines StreamReader zum Konvertieren des MemoryStream in einen String.
quelle
Verwenden Sie einen StreamReader . Anschließend können Sie die ReadToEnd- Methode verwenden, die eine Zeichenfolge zurückgibt.
quelle
Basestream
sollte seine Position auf 0 gesetzt hatmemoryStream.Position = 0;
.quelle
Frühere Lösungen würden in Fällen, in denen es um Codierung geht, nicht funktionieren. Hier ist - eine Art "echtes Leben" - ein Beispiel, wie man das richtig macht ...
quelle
In diesem Fall , wenn Sie wirklich verwenden mögen
ReadToEnd
Methode inMemoryStream
einer einfachen Möglichkeit, können Sie diese Erweiterungsmethode verwenden , um dies zu erreichen:Und Sie können diese Methode folgendermaßen anwenden:
quelle
Dieses Beispiel zeigt, wie Sie eine Zeichenfolge aus einem MemoryStream lesen, in dem ich eine Serialisierung verwendet habe (mit DataContractJsonSerializer), die Zeichenfolge von einem Server an den Client übergeben und anschließend den MemoryStream aus der als Parameter übergebenen Zeichenfolge wiederherstellen , deserialisieren Sie den MemoryStream.
Ich habe Teile verschiedener Beiträge verwendet, um dieses Beispiel durchzuführen.
Hoffe das hilft.
quelle
Eine leicht modifizierte Version von Brians Antwort ermöglicht die optionale Verwaltung des Lesestarts. Dies scheint die einfachste Methode zu sein. wahrscheinlich nicht die effizienteste, aber einfach zu verstehen und zu verwenden.
quelle
Warum nicht eine nette Erweiterungsmethode für den MemoryStream-Typ erstellen?
Seien Sie natürlich vorsichtig, wenn Sie diese Methoden in Verbindung mit den Standardmethoden verwenden. :) ... Sie müssen dieses praktische streamLock verwenden, wenn Sie dies für die Parallelität tun.
quelle
Ich muss mich in eine Klasse integrieren, die einen Stream zum Schreiben benötigt:
Ich erstelle eine einfache Klasse, die dazu beitragen kann, Codezeilen für die mehrfache Verwendung zu reduzieren:
Dann können Sie das Beispiel durch eine einzelne Codezeile ersetzen
quelle