从流中获取TextReader?

Jua*_*uan 74 .net c# io

我正在尝试阅读嵌入的文本文件,System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);但它给了我一个Stream.嵌入式资源是一个文本文件,那我怎么能把它Stream变成一个TextReader

Teo*_*zon 172

TextReader tr = new StreamReader(stream);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在此作业中,使用编码将字节转换为字符。默认情况下,会检测编码。 (2认同)

dri*_*iis 18

A StreamReader是其子类TextReader,因此您可以执行以下操作:

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


Arn*_* F. 5

您可以像这样读取资源文件:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)


Pau*_* pk 5

您需要从中获取一个StreamReader(TextReader是StreamReader和StringReader的抽象基类)。就像是:

var stream = System.Reflection.Assembly.GetExecutingAssembly().
    GetManifestResourceStream(resource);
var reader = new StreamReader(stream);
var text = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)