c# 释放所有嵌入资源, 到某个本地文件夹

这篇具有很好参考价值的文章主要介绍了c# 释放所有嵌入资源, 到某个本地文件夹。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

版本号

.net 8文章来源地址https://www.toymoban.com/news/detail-808986.html

代码

using System.Reflection;

namespace Demo;

internal class Program
{
    static void Main(string[] args)
    {
    	// 获取当前 执行exe 的目录 / 当前命令行所在的目录    	
        var currentDir = Directory.GetCurrentDirectory();
        
        Console.WriteLine(currentDir);
        
        ExtractAllFile(currentDir);
        
        Console.WriteLine("文件释放结束");
    }

	// 把嵌入资源按照 原路径 输出到某个本地文件夹
	// 嵌入资源的名称可以用 dnSpy 查看..
	// string outDirPath = "E:\work"
	// Demo.public.abc.png -> E:\work\public\abc.png
	// Demo.abc.png -> E:\work\abc.png
    static void ExtractAllFile(string outDirPath)
    {
        var assembly = Assembly.GetExecutingAssembly();

        // 获取所有嵌入的文件
        // 格式:命名空间.文件夹.文件名 
        // Demo.public.abc.png
        var names = assembly.GetManifestResourceNames();

        foreach (var name in names)
        {
            // 读取嵌入的文件 stream
            var streamData = assembly.GetManifestResourceStream(name);
            if (streamData is not null)
            {
                var resourcePathArr = name.Split('.');
                
				// 文件夹完整地址
                var dirPathArr = resourcePathArr[1..^2];
                var dirPath = Path.Combine(outDirPath, Path.Combine(dirPathArr));
                
				// 文件名+扩展名 (abc.png)
                var fileNameArr = resourcePathArr[^2..];
                var fileName = string.Join(".", fileNameArr);

                if (!Directory.Exists(dirPath))
                {
                	// 创建文件夹
                    Directory.CreateDirectory(dirPath);
                }

                using var inStream = new BufferedStream(streamData);
                
                // 创建/覆盖 文件
                using var outStream = new FileStream(Path.Combine(dirPath, fileName), FileMode.Create, FileAccess.Write);
                
                byte[] buffer = new byte[1024];
                int length;

                while ((length = inStream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    outStream.Write(buffer, 0, length);
                }
                outStream.Flush();
            }
        }
    }

}


到了这里,关于c# 释放所有嵌入资源, 到某个本地文件夹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深入浅出C#】章节10: 最佳实践和性能优化:内存管理和资源释放

    一、 内存管理基础 1.1 垃圾回收机制 垃圾回收概述 垃圾回收(Garbage Collection)是一种计算机科学和编程领域的重要概念,它主要用于自动管理计算机程序中的内存分配和释放。垃圾回收的目标是识别和回收不再被程序使用的内存,以便释放资源并防止内存泄漏,从而提高程

    2024年02月09日
    浏览(55)
  • linux中查看某个文件夹下文件的个数和大小

    1、stat指令 stat命令 主要用于显示文件或文件系统的详细信息,该命令的语法格式如下: -f 不显示文件本身的信息,显示文件所在文件系统的信息 -L 显示符号链接 -t 简洁模式,只显示摘要信息 如: 2、wc命令 wc指令可以计算文件的列数、字数和Byte数。 -c : Byte数 -l : 文件行数

    2024年02月07日
    浏览(58)
  • github只下载某个文件或文件夹(使用GitZip插件)

    (此安装过程需要梯子(不懂“梯子”,百度一下就明白)) 1. 打开插件管理页面 方法一:打开Chrome浏览器(Edge浏览器同理),在Chrom地址栏输入 chrome://extensions/ ,或edge地址栏 edge://extensions/ 进入插件管理页面。 方法二:直接Chrome浏览器找管理页面(Edge浏览器同理) 2. 搜索\\\"GitZip fo

    2024年04月26日
    浏览(59)
  • 限制Linux指定用户访问某个文件夹,禁止其访问指定文件夹

         默认情况下用户本身就只能读写执行自己目录下自己创建的文件,自己主目录以外的文件都没有写权限、执行权限;自己主目录以外的目录,则只有r和x权限,没有w权限,对于合法的ssh用户,这样的权限就已经足够了。 否则如果去该系统目录和文件的权限,可能会引起

    2024年02月06日
    浏览(73)
  • 【git】按需下载仓库某个文件夹

    在 github 有一个很大的仓库,但是自己真正使用的只有某几个文件夹,那么如何只下载这几个文件夹呢? 这里就要使用 git 的 sparse-checkout 功能 下面主要介绍三种情况 本地没有此仓库代码 本地已有此仓库代码 禁用该功能 本地建立一个新的仓库 添加远程仓库地址 这里的远程

    2024年02月11日
    浏览(53)
  • 如何查看某个文件夹的git修改记录

    要查看某个文件夹在Git中的修改记录,你可以使用 git log 命令,并指定文件夹的路径。下面是具体的步骤: 打开命令行或终端。 切换到你的Git仓库的根目录。 执行以下命令,其中 path/to/folder 是你想要查看修改记录的文件夹的相对路径: 这个命令会显示该文件夹及其内部文

    2024年03月15日
    浏览(68)
  • Ubuntu 使用 du 查看某个文件夹大小

    在 Ubuntu 系统中,你可以使用 du 命令来查看文件夹的大小。例如,如果你想查看文件夹 /var/log 的大小,你可以使用如下的命令: 其中,-s 选项表示只输出总大小,-h 选项表示以人类可读的格式输出。 你也可以使用 du 命令来查看某个文件夹下所有文件和文件夹的大小,例如:

    2024年02月12日
    浏览(60)
  • MFC的文件操作——获取指定文件夹下面所有文件路径和删除指定文件夹下面所有文件

    目录 1.获取指定文件夹下面所有文件路径  2.删除指定文件夹下面所有文件 3.MFC的CString 字符串操作 4.MFC的 Int类型 与 Htuple类型数据之间转换  5.上述提及的函数应用 6.MFC与Halcon联合编程,获取halcon异常 7.MFC获取指定路径下的文件夹路径           ①、文件夹路径获取方式 ②

    2024年02月16日
    浏览(116)
  • Git checkout 某个版本到指定文件夹下

    我不想checkout到覆盖本地工作区的文件, 而是想把该 版本checkout到另外一个文件夹下,检出看看,这个文件夹不被git管理 将 commit_hash 替换为你想要检出的具体commit的哈希值,new_folder 替换为你想要保存文件的新文件夹路径。 这条命令会创建一个对应版本的tar临时归档文件,

    2024年02月08日
    浏览(59)
  • git 提交代码某个文件夹一直提交不上去

    问题描述: 这个文件夹是直接拷贝过去的,在提交到远程仓库是出现了问题。 问题分析: 直接拷贝过去的文件夹里面有个 .git 的文件,所以在执行 git status 的时候出现 modified: test (modified content, untracked content) 提示,这个提示存在的原因是 xxx目录是一个空目录,且里面有一个

    2024年03月15日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包