web-dev-qa-db-ja.com

ストリームからTextReaderを取得しますか?

System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);で埋め込みテキストファイルを読み取ろうとしていますが、Streamが返されます。埋め込みリソースはテキストファイルなので、このStreamTextReaderに変換するにはどうすればよいですか?

71
Juan
TextReader tr = new StreamReader(stream);
168

StreamReaderTextReaderのサブクラスであるため、次のことができます。

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

リソースファイルは次のように読むことができます。

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;
    }
}
5
Arnaud F.

StreamReaderを取得する必要があります(TextReaderはStreamReaderおよびStringReaderの抽象基本クラスです)。何かのようなもの:

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