如何从资源C#打开文件

时间:2012-09-08 18:20:56

标签: c# visual-studio

当您点击按钮时,您知道如何从Visual Studio中的资源打开文件吗? 感谢。

2 个答案:

答案 0 :(得分:9)

您可以使用GetManifestResourceStream方法:

var currentAssembly = Assembly.GetExecutingAssembly();
using (var stream = currentAssembly.GetManifestResourceStream("SomeNs.file.txt"))
using (var reader = new StreamReader(stream))
{
    // TODO: read the stream here
    string contents = reader.ReadToEnd();
}

在此示例中,file.txt作为资源嵌入到当前程序集中。您必须调整您尝试阅读的资源的名称。如果嵌入资源不是文本文件,请不要使用StreamReader。如果是二进制文件,则必须直接读取流。

答案 1 :(得分:1)

当您的文件是本地文件

时,可以使用此选项
        string resName = "myfile.txt";
        var file = GetResourceStream(resName);
        string all = "";

        using (var reader = new StreamReader(file))
        {
            all = reader.ReadToEnd();
        }

其中

     static UnmanagedMemoryStream GetResourceStream(string resName)
    {
        var assembly = Assembly.GetExecutingAssembly();
        var strResources = assembly.GetName().Name + ".g.resources";
        var rStream = assembly.GetManifestResourceStream(strResources);
        var resourceReader = new System.Resources.ResourceReader(rStream);
        var items = resourceReader.OfType<System.Collections.DictionaryEntry>();
        var stream = items.First(x => (x.Key as string) == resName.ToLower()).Value;
        return (UnmanagedMemoryStream)stream;
    }

enter image description here