Get a TextReader from a Stream?

C#.NetIo

C# Problem Overview


I'm trying to read an embedded text file with System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource); but it gives me a Stream. The embedded resource is a text file so, how can I turn this Stream into a TextReader?

C# Solutions


Solution 1 - C#

TextReader tr = new StreamReader(stream);

Solution 2 - C#

A StreamReader is a subclass of TextReader, so you will be able to do:

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

Solution 3 - C#

You can read your resource file like this :

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;
    }
}

Solution 4 - C#

You need to get a StreamReader from it (TextReader is an abstract base class of StreamReader and StringReader). Something like:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJuanView Question on Stackoverflow
Solution 1 - C#Teo Klestrup RöijezonView Answer on Stackoverflow
Solution 2 - C#driisView Answer on Stackoverflow
Solution 3 - C#Arnaud F.View Answer on Stackoverflow
Solution 4 - C#Paul Kearney - pkView Answer on Stackoverflow