免费邀请码更改用户名CRC32解密2.0回帖奖励召回投票记录删除领夜猫子帮助中心 本站已运行
搜索
查看: 196|回复: 1
收起左侧

超简单文件打包解包系统1.0版 - 可将目录中的多个文件与文件名打包成一个文件/字节集

[复制链接]
发表于 2018-10-27 19:50:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?加入我们

x

  1. .版本 2
  2. .支持库 spec

  3. .程序集 程序集1

  4. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


  5. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  6. 返回 (0)  ' 可以根据您的需要返回任意数值

  7. .子程序 _临时子程序

  8. ' 文件打包解包数据格式: 开头为文件名(文本型不含路径) 遇到空字符终止,接下来4字节为数据长度,再继续为文件数据,以此类推。

  9. 写到文件 (“font.bin”, 文件打包 (“C:\WINDOWS\Fonts”))
  10. 创建目录 (“font”)
  11. 文件解包 (“font”, 读入文件 (“font.bin”))


  12. .子程序 枚举文件, 文本型
  13. .参数 目录, 文本型
  14. .局部变量 目录表, 文本型

  15. .如果真 (运行控制台程序 (“cmd /c dir /b ” + #引号 + 目录 + “\*” + #引号, 目录表, , ) = 假)
  16.     返回 (“”)
  17. .如果真结束
  18. 返回 (目录表)


  19. .子程序 文件打包, 字节集, 公开, 将一个目录中的多个文件以及文件名打包成一个文件
  20. .参数 目录路径, 文本型, , 不支持子目录以及文件属性,末尾不含斜杠
  21. .局部变量 文件列表, 文本型, , "0"
  22. .局部变量 文件数, 整数型
  23. .局部变量 计数, 整数型
  24. .局部变量 数据长度, 整数型
  25. .局部变量 文件长度, 整数型
  26. .局部变量 内存首地址, 整数型
  27. .局部变量 当前指针, 整数型
  28. .局部变量 返回值, 字节集
  29. .局部变量 数据, 字节集
  30. .局部变量 长度, 整数型

  31. 目录路径 = 子文本替换 (目录路径, “/”, “\”, , , 真)
  32. 文件列表 = 分割文本 (枚举文件 (目录路径), #换行符, )
  33. 文件数 = 取数组成员数 (文件列表)
  34. 数据长度 = 0
  35. .计次循环首 (文件数, 计数)
  36.     文件长度 = 取文件尺寸 (目录路径 + “\” + 文件列表 [计数])
  37.     .如果真 (文件长度 ≥ 0)
  38.         数据长度 = 数据长度 + 取文本长度 (文件列表 [计数]) + 1 + 文件长度 + 4
  39.     .如果真结束

  40. .计次循环尾 ()
  41. 内存首地址 = 申请内存 (数据长度, 真)
  42. 当前指针 = 内存首地址
  43. .计次循环首 (文件数, 计数)
  44.     数据 = 读入文件 (目录路径 + “\” + 文件列表 [计数])
  45.     长度 = 取字节集长度 (数据)
  46.     写到内存 (文件列表 [计数], 当前指针, )
  47.     当前指针 = 当前指针 + 取文本长度 (文件列表 [计数]) + 1
  48.     写到内存 (长度, 当前指针, )
  49.     当前指针 = 当前指针 + 4
  50.     写到内存 (数据, 当前指针, )
  51.     当前指针 = 当前指针 + 长度
  52. .计次循环尾 ()
  53. 返回值 = 指针到字节集 (内存首地址, 数据长度)
  54. 释放内存 (内存首地址)
  55. 返回 (返回值)

  56. .子程序 文件解包, 逻辑型, 公开, 将一个文件解包成多个文件到指定目录
  57. .参数 目录名, 文本型, , 末尾不含斜杠
  58. .参数 数据, 字节集, , 提供打包后的数据
  59. .局部变量 指针, 整数型
  60. .局部变量 结束指针, 整数型
  61. .局部变量 当前指针, 整数型
  62. .局部变量 文件名, 文本型
  63. .局部变量 数据长度, 整数型
  64. .局部变量 文件数据, 字节集

  65. 指针 = 取变量数据地址 (数据)
  66. 当前指针 = 指针
  67. 结束指针 = 指针 + 取字节集长度 (数据)
  68. .循环判断首 ()
  69.     文件名 = 指针到文本 (当前指针)
  70.     当前指针 = 当前指针 + 取文本长度 (文件名) + 1
  71.     数据长度 = 指针到整数 (当前指针)
  72.     当前指针 = 当前指针 + 4
  73.     文件数据 = 指针到字节集 (当前指针, 数据长度)
  74.     当前指针 = 当前指针 + 数据长度
  75.     .如果真 (写到文件 (目录名 + “\” + 文件名, 文件数据) = 假)
  76.         返回 (假)
  77.     .如果真结束

  78. .循环判断尾 (当前指针 < 结束指针)
  79. 返回 (真)

复制代码

相关帖子

回复

使用道具 举报

腾讯云为数百万企业和开发者提供安全、稳定的云服务器、云数据库、CDN等云服务
发表于 2018-10-27 23:46:19 | 显示全部楼层
谢谢分享了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|官方QQ群|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备 15010402000325号 腾讯云安全认证

GMT+8, 2019-8-25 16:02, 34.236.190.216 , Processed in 0.157226 second(s), 29 queries .

Powered by Discuz! X3.4 © 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表