2010-07-22 12 views
1

J'utilise un tcpstream et copié les données dans la mémoire. Maintenant, je voudrais le convertir en un texte (codé en UTF-8). J'ai essayé de diverses manières et ai fait flush() mais je ne pourrais pas compris dehors. J'ai essayé de l'utiliser en combinaison avec StreamReader sans aucune chance (j'obtiens une chaîne vide).Comment puis-je convertir un flux de données en texte?

Répondre

14

Procurez-vous les données de la MemoryStream et décodent:

string decoded = Encoding.UTF8.GetString(theMemoryStream.ToArray()); 

Il est probable que vous obtenez une chaîne vide parce que vous lisez de la MemoryStream sans réinitialiser sa position. La méthode ToArray obtient toutes les données indépendamment de l'emplacement actuel.

S'il s'agit d'un tableau d'octets avant de le placer dans le MemoryStream, vous pouvez l'utiliser directement.

5
using(MemoryStream ms = GetStream()) 
using(StreamReader reader = new StreamReader(ms)) 
{ 
    ms.Position = 0; 
    Console.WriteLine(reader.ReadToEnd()); 
} 
+0

Cela ne fonctionne pas –

+0

@acidzombie Que s'est-il passé lorsque vous l'avez essayé? –

+0

chaîne vide. Guffa l'a résolu. J'ai dû chercher les ms au début. J'ai fini par utiliser sa solution Array. –