Bir Akıştan Metin Okuyucusu mu alıyorsunuz?


81

Gömülü bir metin dosyasını okumaya çalışıyorum System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);ama bana bir Stream. Gömülü kaynak bir metin dosyasıdır, bu yüzden bunu nasıl Streambir TextReader?

Yanıtlar:


183
TextReader tr = new StreamReader(stream);

1
Lütfen bu atamada bayttan karaktere dönüştürmek için bir kodlamanın kullanıldığını unutmayın. Varsayılan olarak, kodlama algılanır.
R. Schreurs

18

A StreamReader, bir alt sınıfıdır TextReader, bu nedenle şunları yapabileceksiniz:

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

5

Kaynak dosyanızı şu şekilde okuyabilirsiniz:

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

Bir foreachdöngü açık numaralandırıcıya daha iyidir.
R. Martinho Fernandes

5

Ondan bir StreamReader almanız gerekir (TextReader, StreamReader ve StringReader'ın soyut bir temel sınıfıdır). Gibi bir şey:

var stream = System.Reflection.Assembly.GetExecutingAssembly().
    GetManifestResourceStream(resource);
var reader = new StreamReader(stream);
var text = reader.ReadToEnd();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.