热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

嵌入资源第三讲:多格式文件内嵌入WPF资源文件

作为一个扩展,你需要了解DotNetZip用法,请参见:C#.NET使用第三方类库DotNetZip解压压缩Zip文件你也需要了解单文件内嵌入资源文件基本方法,参见:WPF调用嵌入

作为一个扩展,你需要了解DotNetZip用法,请参见:
C# .NET 使用第三方类库DotNetZip解压/压缩Zip文件

你也需要了解单文件内嵌入资源文件基本方法,参见:
WPF调用嵌入的非.net的EXE资源文件

作者:一剑

如果你有一大堆文件或者想通过打包的方式嵌入任意格式的文件到资源文件中,那么你可以打包成一个ZIP文件,再嵌入到资源文件中是一个不错的选择:

using Ionic.Zip;//+
using System.Reflection;
using System.IO;
using System.Threading;
namespace WpfApplication2
{
///


/// MainWindow.xaml 的交互逻辑
///

public partial class MainWindow : Window
{
List fileList = new List();
public MainWindow()
{
InitializeComponent();
Thread t = new Thread(new ThreadStart(unzip));
t.IsBackground = true;
t.Start();
}
private void unzip()
{
String projectName = Assembly.GetExecutingAssembly().GetName().Name.ToString();
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(projectName + ".f.zip"))
{
Byte[] b = new Byte[stream.Length];
stream.Read(b, 0, b.Length);
MemoryStream m = new MemoryStream(b);
using (ZipFile zip = ZipFile.Read(m))
{
zip.ExtractAll(System.IO.Path.GetTempPath(), ExtractExistingFileAction.OverwriteSilently);
foreach (ZipEntry entry in zip)
{
fileList.Add(System.IO.Path.GetTempPath() + entry.FileName);
}
}
}
}

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            foreach (string f in fileList)
            {
                if (File.Exists(f))
                    MessageBox.Show(f + " is found.");
            }
        }
private void Window_Closed(object sender, EventArgs e)
{foreach (string f in fileList)
{
if (File.Exists(f))
File.Delete(f);
}
}
}
}

 

在这篇示例中,在程序结束时加入了ZIP中文件的遍历及清理,使得使用过后不留痕迹,把活干得漂亮点^_^。

转载于:https://www.cnblogs.com/aswordok/p/3764780.html



推荐阅读
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • 【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库
    【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Eclipse 开发环境配置指南:从下载到免安装配置
    Eclipse 是一个广泛使用的开源Java开发环境,掌握其正确的安装与配置方法对于初学者至关重要。本文将详细介绍如何下载、安装及配置Eclipse,确保您的开发环境搭建顺利。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 七大策略降低云上MySQL成本
    在全球经济放缓和通胀压力下,降低云环境中MySQL数据库的运行成本成为企业关注的重点。本文提供了一系列实用技巧,旨在帮助企业有效控制成本,同时保持高效运作。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 在Linux系统中,许多应用程序以源代码的形式提供,这给安装带来了挑战。本文旨在介绍一种简化源码软件安装流程的方法,帮助用户更加轻松地完成安装。 ... [详细]
  • 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是 ... [详细]
  • AcetoneISO:Ubuntu Linux下的全能虚拟光驱工具
    AcetoneISO 是一款功能强大的虚拟光驱软件,适用于 Linux 和 Mac 系统。它支持多种映像文件格式的挂载和转换,并提供丰富的文件管理功能。 ... [详细]
author-avatar
止水若境
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有