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


81

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

回答:


183
TextReader tr = new StreamReader(stream);

1
この割り当てでは、エンコーディングを使用してバイトから文字に変換することに注意してください。デフォルトでは、エンコーディングが検出されます。
R. Schreurs 2018年

18

AStreamReaderはのサブクラスでTextReaderあるため、次のことができるようになります。

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

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

foreachループは、明示的な列挙子よりも優れています。
R.マルティーニ・フェルナンデス

5

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

var stream = System.Reflection.Assembly.GetExecutingAssembly().
    GetManifestResourceStream(resource);
var reader = new StreamReader(stream);
var text = reader.ReadToEnd();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.