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