循环嵌入资源并复制到本地路径

时间:2016-05-06 23:14:15

标签: c# winforms resources embedded-resource

我有一个简单的WinForms应用程序,但它有一些嵌入式资源(在"资源"下的子文件夹中),我想将其复制到计算机上的文件夹中。目前,我有后者工作(使用显式方法命名嵌入式资源及其应该去的地方):

jbyteArray

但是我仍在努力弄清楚如何让前者工作:循环遍历" WINFORMSAPP.Resources.SUBFOLDER"中的所有资源。文件夹并移动它们。我已经完成了相当多的谷歌搜索,但我还是不确定如何在这个子文件夹中获取每个嵌入资源的列表。

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:5)

首先将所有资源嵌入到程序集中:

Assembly.GetExecutingAssembly().GetManifestResourceNames()

您可以根据所需子文件夹的名称检查这些名称,只需拨打StartsWith即可查看这些名称是在其内部还是外部。

现在遍历名称,并获取相应的资源流:

const string subfolder = "WINFORMSAPP.Resources.SUBFOLDER.";
var assembly = Assembly.GetExecutingAssembly();
foreach (var name in assembly.GetManifestResourceNames()) {
    // Skip names outside of your desired subfolder
    if (!name.StartsWith(subfolder)) {
        continue;
    }
    using (Stream input = assembly.GetManifestResourceStream(name))
    using (Stream output = File.Create(path + name.Substring(subfolder.Length))) {
        input.CopyTo(output);
    }
}