从C#资源中读取文本文件

从C#资源中读取文本文件,c#,file-io,resources,streamreader,C#,File Io,Resources,Streamreader,我需要从我的资源中读取一个文件并将其添加到列表中。 我的代码: 我搜索了这个,只得到了像“Assembly.getExecutionGassembly…”这样的答案,但我的程序没有汇编选项。?试试这样的方法: string resource_data = Properties.Resources.test; List<string> words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.

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


我搜索了这个,只得到了像“Assembly.getExecutionGassembly…”这样的答案,但我的程序没有汇编选项。?

试试这样的方法:

string resource_data = Properties.Resources.test;
List<string> words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).ToList();
string resource\u data=Properties.Resources.test;
List words=resource_data.Split(new[]{Environment.NewLine},StringSplitOptions.removemptyentries.ToList();
在哪里


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

只要您包括“使用System.Reflection;”您可以如下方式访问程序集:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace." + filename);
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
    }
}
或者,如果您不需要更改文件名,只需使用:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.MyFile.txt");
完整代码应如下所示:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace." + filename);
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){
.....
}

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

是否使用System.Reflection添加了
在页面顶部?您有什么问题?我读到这将工作
新的StreamReader(Assembly.GetExecutionGassembly.GetNamedResourceStream(“[program namespace].Thresh Dress.txt”)
但它没有选项
。GetNamedResourceStream
请确保在名称空间中键入时使用下划线而不是空格。如果仍需要说明,请向上滚动到代码顶部,并在代码顶部显示名称空间的位置使用该名称空间。
StreamReader reader=new StreamReader(Assembly.getExecutionGassembly().GetManifestResourceStream(“myProg.myText.txt”){
这里唯一的选项是BaseStream和CurrentEncoding`}通过调用这些方法,您还可以尝试清理项目并重新启动VS。
        [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"); 
        }