从C#Resources读取文本文件

我需要从我的资源中读取一个文件并将其添加到列表中。 我的代码:

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...."这样的答案,但我的程序没有选择汇编。

尝试这样的事情:

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

哪里

在此处输入图像描述

您需要using System.Reflection;包含using System.Reflection; 在标题中,以便访问Assembly。 这仅适用于在VS中将文件标记为“嵌入式资源”的情况。

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

只要你包含’using System.Reflection;’ 您可以像这样访问Assembly:

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

您将资源文件作为字节数组获取,因此您可以使用WriteAllBytes创建新文件。 如果您不知道在哪里可以编写文件(权限和访问的原因),您可以使用Path.GetTempPath()来使用PC临时文件夹来编写新文件,然后您可以从那里复制或工作。