通过无需解压读取ZIP压缩包的方法,寻思者如何可以不解压直接读Genesis TGZ文件内容,

通过查找资料,原来可以通过:SharpCompress.dll工具实现此需求,此工具如此NB

一.SharpCompress  读取TGZ小结:

1.读取TGZ内容,无法直接直接指定路径读取文件,只能通过MoveToNextEntry一个一个往下遍历查找文件

2.MoveToNextEntry 遍历文件,采用的是深度递归

3.区分文件名与文方件夹,无法通过Entry.IsDirectory 区分,识别方法:尾随 / 斜杆为文件夹,否则为文件

二.通过写实际例子来对此工具的用法进行说明这样来得更实际一些。哈哈

例1:读取TGZ  STEP中有多少个step

  1. private string readTGZ_Dir()
  2. {
  3. string line = "";
  4. string tarFilePath = @"F:\2p00802ya0.tgz";
  5. string FileName = Path.GetFileNameWithoutExtension(tarFilePath);
  6. string FindDir = $@"{FileName}/steps/"; //以/斜杆结尾为文件夹
  7. using (Stream stream = File.OpenRead(tarFilePath))
  8. {
  9. IReader reader = ReaderFactory.Open(stream);
  10. while (reader.MoveToNextEntry())
  11. {
  12. Match matchresult = Regex.Match(reader.Entry.Key, $@"^{FindDir}([\w\s]+)/$");
  13. if (matchresult.Success)
  14. {
  15. line += matchresult.Groups[].Value + " ";
  16. }
  17. }
  18. }
  19. return line;
  20. }

例2:读取TGZ  指定standard字体内容

  1. private string readTGZ_File()
  2. {
  3. string line = "";
  4. string tarFilePath = @"F:\2p00802ya0.tgz";
  5. string FileName = Path.GetFileNameWithoutExtension(tarFilePath);
  6. string FindFile = $@"{FileName}/fonts/standard";
  7. using (Stream stream = File.OpenRead(tarFilePath))
  8. {
  9. IReader reader = ReaderFactory.Open(stream);
  10. while (reader.MoveToNextEntry())
  11. {
  12. if (reader.Entry.Key == FindFile)
  13. {
  14. EntryStream st = reader.OpenEntryStream();
  15. byte[] byData = new byte[reader.Entry.Size];
  16. st.Read(byData, , byData.Length);
  17. line = System.Text.Encoding.Default.GetString(byData); //纯英文读取
  18. //line = System.Text.Encoding.UTF8.GetString(byData); //含中文读取
  19. st.Close();
  20. break;
  21. }
  22. }
  23. }
  24. return line;
  25. }

PCB 无需解压,直接读取Genesis TGZ指定文件 实现方法的更多相关文章

  1. PCB 无需解压,直接读取Zip压缩包指定文件 实现方法

    最近有一项需求,将电测试点数后台批量写入到工程系统流程指示中,而电测试文件存在压缩包中,压缩包存在公共网络盘 示例图: 一.采用原始方法(4步完成): 第1步:.网络盘ZIP拷到本地, 第2步:解压Z ...

  2. 解压tar包中的指定文件

    解压<a 'tar');"="" href="http://asmboy001.blog.51cto.com/'#\'"" targe ...

  3. *.tar 用 tar –xvf 解压 *.gz 用 gzip -d或者gunzip 解压 *.tar.gz和*.tgz 用 tar –xzf 解压 *.bz2 用 bzip2 -d或者用bunzip2 解压 、*.tar.bz2用tar –xjf 解压

    解压: 1.*.tar 用 tar –xvf 解压, --skip-old-files跳过已经存在的文件,压缩用tar -cvf 2.*.bz2 用 bzip2 -d或者用bunzip2 解压 3.* ...

  4. node.js如何将远程的文件下载到本地、解压、读取

    其实要解决的问题,很简单,获取远程文件,然后解压到本地读取. 在vscode中通过node.js来实现是比较方便的,相比之前的zip.js,我觉得我还是比较喜欢node.js实现方式. test.js ...

  5. Java解压上传zip或rar文件,并解压遍历文件中的html的路径

    1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...

  6. tar命令解压、压缩gz/bz2/xz文件

    1.处理.tar.gz 压缩:tar zcf FILE.tar.gz FILEDIR 解压:tar zxf FILE.tar.gz 2.处理.tar.bz2 压缩:tar jcf FILE.tar.b ...

  7. linux大文件分包压缩和批量解压命令tar // tar 排除指定目录

    压缩命令主要用到tar打包和split分割,命令如下: tar czf - aaa | split -b 1024m - bbb.tar.gz_ aaa可以是文件也可以是目录, 大小可以是b.k.m这 ...

  8. 解压cpio.gz、zip类型文件

    aix上的oracle介质文件是10gr2_aix5l64_database.cpio.gz 解压方法: gunzip 10gr2_aix5l64_database.cpio.gz cpio -idm ...

  9. Java: war包的作用及使用方法,如何解压后缀名为war的文件

    1.什么是war文件? 如果一个Web应用程序的目录和文件非常多,那么将这个Web应用程序部署到另一台机器上,就不是很方便了,我们可以将Web应用程序打包成Web归档(WAR)文件.这个过程和把Jav ...

随机推荐

  1. 【sqli-labs】 less47 GET -Error based -String -Order By Clause(GET型基于错误的字符型Order By从句注入)

    http://192.168.136.128/sqli-labs-master/Less-47/?sort=1 改变sort的值,结果仍然是order by 1的结果 http://192.168.1 ...

  2. shell脚本网络流量实时查看

    Linux网络流量实时查看脚本,Centos默认没有自带流量查看工具,通过网上的资料做了一些修改 #!/bin/bash # Author: Ca0gu0 # Script Name: idev.sh ...

  3. C# 统计字符串出现的个数

    string str1 = "123AAA456AAAA789AAAAAAA1011"; string str2 = "123456789AAA23456789AAAA3 ...

  4. 洛谷——P3833 [SHOI2012]魔法树

    P3833 [SHOI2012]魔法树 题目背景 SHOI2012 D2T3 题目描述 Harry Potter 新学了一种魔法:可以让改变树上的果子个数.满心欢喜的他找到了一个巨大的果树,来试验他的 ...

  5. 四、Spider用法

    本文转载自以下链接: https://scrapy-chs.readthedocs.io/zh_CN/latest/topics/spiders.html https://doc.scrapy.org ...

  6. RabbitMQ在Ubuntu上的环境搭建

    1.修改/etc/apt/sources.list文件 A:命令:vi /etc/apt/sources.list B:在最后一行加上:deb http://www.rabbitmq.com/debi ...

  7. 【LeetCode Weekly Contest 26 Q3】Friend Circles

    [题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/friend-circles/ [题意] 告诉你任意两个 ...

  8. JavaScript学习总结(7)——JavaScript基础知识汇总

  9. noip模拟赛 赤の夜

    题目背景 下发压缩包链接: https://pan.baidu.com/s/1geC4ooz 密码: 3vpt(同T1) 正在想这么说的时候—— 突然涌出一种强烈的晕眩感. 这是,什么……? 眼花吗? ...

  10. 导出excel - 自用

    export function handerFillZero(num){ return num>=10 ? num : '0'+num; } export function exportExce ...