Get a TextReader from a Stream?
70,290
Solution 1
TextReader tr = new StreamReader(stream);
Solution 2
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
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
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();
Author by
Juan
I'm a software developer, currently working on my personal project http://www.heliumscraper.com.
Updated on December 28, 2020Comments
-
Juan over 3 years
I'm trying to read an embedded text file with
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);
but it gives me aStream
. The embedded resource is a text file so, how can I turn thisStream
into aTextReader
? -
R. Martinho Fernandes over 13 yearsA
foreach
loop is better than an explicit enumerator. -
R. Schreurs over 5 yearsPlease note that in this assignment, an encoding is used to convert from bytes to characters. By default, the encoding is detected.