Próbuję odczytać osadzony plik tekstowy za pomocą, System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);
ale daje mi Stream
. Osadzony zasób to plik tekstowy, więc jak mogę go zamienić Stream
na plik TextReader
?
Odpowiedzi:
TextReader tr = new StreamReader(stream);
Możesz przeczytać swój plik zasobów w ten sposób:
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
Pętla jest lepsza niż wyraźnego wyliczający.
Musisz pobrać z niego StreamReader (TextReader jest abstrakcyjną klasą bazową StreamReader i StringReader). Coś jak:
var stream = System.Reflection.Assembly.GetExecutingAssembly().
GetManifestResourceStream(resource);
var reader = new StreamReader(stream);
var text = reader.ReadToEnd();