2011-03-17 6 views
54

System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);の埋め込みテキストファイルを読み込もうとしていますが、それは私にStreamを与えます。埋め込みリソースはテキストファイルなので、StreamTextReaderにするにはどうすればよいですか?ストリームからTextReaderを取得しますか?

答えて

141
TextReader tr = new StreamReader(stream); 
17

StreamReaderTextReaderのサブクラスであるので、あなたが行うことができるようになります:あなたが取得する必要があります

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

あなたはこのようなあなたのリソースファイルを読み込むことができますそれからのStreamReader(TextReaderはStreamReaderとStringReaderの抽象基本クラスです)。次のようなものがあります。

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

「foreach」ループは明示的な列挙型よりも優れています。 –

+0

@Martinho:固定、ありがとう。 –

4

using(var stream = System.Reflection.Assembly.GetExecutingAssembly(). 
    GetManifestResourceStream(resource)) 
using(var reader = new StreamReader(stream)) 
{ 
    // Use reader. 
} 
関連する問題