Чтение текстового файла из ресурсов C#

мне нужно прочитать файл из "мои ресурсы" и добавить его в список. мой код:

private void Form1_Load(object sender, EventArgs e)
{
    using (StreamReader r = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("myProg.myText.txt")))
    {
        //The Only Options Here Are BaseStream & CurrentEncoding
    }
}

Я искал это и только получил ответы, такие как "Assembly.GetExecutingAssembly...." но моя программа не имеет возможности сборки.?

4 ответов


попробуйте что-то вроде этого :

string resource_data = Properties.Resources.test;
List<string> words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).ToList();

здесь

enter image description here


вы должны включить using System.Reflection; в вашем заголовке, чтобы получить доступ к сборке. Это только для тех случаев, когда вы отмечаете файл как "встроенный ресурс" в VS.

var filename = "MyFile.txt"
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNameSpace." + filename));

пока вы включаете "использование системы".Отражение; " вы можете получить доступ к сборке следующим образом:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace." + filename);

или если вам не нужно менять имя файла, просто используйте:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.MyFile.txt");

полный код должен выглядеть так:

using(var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("myProg.m‌​yText.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // Do some stuff here with your textfile
    }
}

чтобы следовать этому, решение AppDeveloper-это путь.

string resource_data = Properties.Resources.test;
string [] words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
foreach(string lines in words){
.....
}

        [TestCategory("THISISATEST")] 
        public void TestResourcesReacheability() 
        { 
            byte[] x = NAMESPACE.Properties.Resources.ExcelTestFile; 
            string fileTempLocation = Path.GetTempPath() + "temp.xls"; 
            System.IO.File.WriteAllBytes(fileTempLocation, x);   

            File.Copy(fileTempLocation, "D:\new.xls"); 
        }

вы получаете файл resouce в виде массива байтов, поэтому вы можете использовать WriteAllBytes для создания нового файла. Если вы не знаете, где вы можете написать файл (причина разрешений и доступа), вы можете использовать путь.GetTempPath (), чтобы использовать временную папку ПК для записи нового файла, а затем вы можете скопировать или работать оттуда.