【C#】如何把资源打包成zip压缩包,内嵌进程序中,然后程序可以直接用代码进行访问,无需解压

如题

如何把资源打包成zip压缩包,内嵌进程序中,然后程序可以直接用代码进行访问,无需解压。

这个我最近用到了,问了AI,又学习到了

  1. 首先将资源文件,打包成zip格式,然后VS中把它添加到资源Resources文件里头
  2. 然后需要有一个函数把资源用代码可以调取出来

它帮我写了一个比较方便的函数,给一个名字就可以帮我找对应的资源出来,然后还是流Stream的。

csharp 复制代码
/// <summary>
/// 安全地读取嵌入资源
/// </summary>
public static Stream GetResourceStream(string partialName)
{
	Assembly assembly = Assembly.GetExecutingAssembly();

	// 方式1:直接尝试
	string fullName = assembly.GetName().Name + "." + partialName.Replace('/', '.').Replace('\\', '.');
	Stream stream = assembly.GetManifestResourceStream(fullName);

	if (stream != null) return stream;

	// 方式2:搜索所有资源
	string[] resources = assembly.GetManifestResourceNames();
	string resourceName = resources.FirstOrDefault(r =>
		r.EndsWith(partialName, StringComparison.OrdinalIgnoreCase) ||
		r.Contains(partialName));

	if (resourceName != null)
	{
		return assembly.GetManifestResourceStream(resourceName);
	}

	throw new FileNotFoundException($"找不到嵌入资源: {partialName}");
}
  1. 拿到压缩包的Stream之后,用ZipArchive类(C#内置的)直接在内存中解压
    xxxx,压缩包的名字
    xxxxxxx,需要的文件的名字
csharp 复制代码
			// 从嵌入式资源加载ZIP
			using (var resourceStream = GetResourceStream("xxxx"))
			using (var archive = new ZipArchive(resourceStream))
			{
				// 加载HTML文件
				var entry = archive.GetEntry("xxxxxxx");
				using (var reader = new StreamReader(entry.Open()))
				{
					var content = await reader.ReadToEndAsync();
					//这里就取出压缩包内需要的文件的内容了
					//后面该干啥就干啥
				}
			}

非常方便了,哈哈哈哈哈

相关推荐
weixin_440730503 分钟前
迭代器Iterator(列表生成器、可迭代的如何生成迭代器)
开发语言·python
朝朝辞暮i9 分钟前
C++ 第 31C 课:Subscriber 到底是什么
开发语言·c++·算法
weixin_4407305026 分钟前
内置函数、json文本、pickle二进制
开发语言·python·json
殷色玫瑰34 分钟前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
李游Leo37 分钟前
HarmonyOS 7 + Spatial Recon Kit-C++:3DGS 高斯参数的非有限值隔离与可渲染性门禁【鸿蒙心迹】
开发语言·c++·3d·harmonyos
时间的拾荒人1 小时前
Qt 文件操作详解:从基础类到读写实战
开发语言·qt·面试
Wang's Blog1 小时前
Java 项目实战: 外卖平台优化-YApi接口管理平台与文档导入导出
java·开发语言·yapi
jimy12 小时前
基类没有虚析构函数,基类指针删除派生类对象,行为是未定义的
开发语言·c++
迅猛龙办公室2 小时前
python获取星期字符串
开发语言·python
泡海椒3 小时前
JQuick-Excel dateFormat 转换实战:日期值与 FORMAT 显示格式的边界
开发语言·python·excel