Подтвердить что ты не робот

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

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

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

Ive искал это и только получил ответы вроде "Assembly.GetExecutingAssembly....", но у моей программы нет опции Assembly.?

4b9b3361

Ответ 1

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

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

Где

enter image description here

Ответ 2

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

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

Пока вы включаете 'using System.Reflection;' вы можете получить доступ к Ассамблее следующим образом:

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

Ответ 3

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

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

Ответ 4

        [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 для создания нового файла. Если вы не знаете, где вы можете написать файл (причина разрешений и доступа), вы можете использовать Path.GetTempPath(), чтобы использовать временную папку ПК для записи нового файла, а затем вы можете копировать или работать оттуда.