29 votes

Obtenez un TextReader à partir d'un flux?

J'essaie de lire un fichier texte incorporé avec System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource); mais cela me donne un Stream . La ressource incorporée est un fichier texte, comment puis-je transformer ce Stream en TextReader ?

82voto

TextReader tr = new StreamReader(stream);

10voto

driis Points 70872

Un StreamReader est une sous-classe de TextReader , vous pourrez donc faire:

 using(var stream = System.Reflection.Assembly.GetExecutingAssembly().
    GetManifestResourceStream(resource))
using(var reader = new StreamReader(stream))
{
    // Use reader.
}
 

4voto

Arnaud F. Points 3841

Vous pouvez lire votre fichier de ressources comme ceci:

 Assembly resourceAssembly = Assembly.LoadFrom(resourceFile.FullName);
string[] manifests = resourceAssembly.GetManifestResourceNames();

using (ResourceReader reader = new ResourceReader(
    resourceAssembly.GetManifestResourceStream(manifests[0])))
{
    foreach (IDictionaryEnumerator dict in reader)
    {
        string key = dict.Key as string;
        object val = dict.Value;
    }
}
 

3voto

Paul Kearney - pk Points 3300

Vous devez en obtenir un StreamReader (TextReader est une classe de base abstraite de StreamReader et StringReader). Quelque chose comme:

 var stream = System.Reflection.Assembly.GetExecutingAssembly().
    GetManifestResourceStream(resource);
var reader = new StreamReader(stream);
var text = reader.ReadToEnd();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X