从C#Resources读取文本文件

Dob*_*obz 18 c# file-io resources streamreader

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

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
    }
}
Run Code Online (Sandbox Code Playgroud)

我搜索了这个,只得到了答案,"Assembly.GetExecutingAssembly...."但我的程序没有大会选项.

PaR*_*RaJ 33

尝试这样的事情:

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

哪里

在此输入图像描述


Pet*_*ano 8

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

var filename = "MyFile.txt"
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNameSpace." + filename));
Run Code Online (Sandbox Code Playgroud)

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

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace." + filename);
Run Code Online (Sandbox Code Playgroud)

或者如果您不需要改变文件名,只需使用:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.MyFile.txt");
Run Code Online (Sandbox Code Playgroud)

完整代码应如下所示:

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
    }
}
Run Code Online (Sandbox Code Playgroud)