教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang小项目-文件打包

golang小项目-文件打包

发布时间:2022-01-14   编辑:jiaochengji.com
教程集为您提供golang小项目-文件打包等资源,欢迎您收藏本站,我们将为您提供最新的golang小项目-文件打包资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg>

<h3>文件打包</h3> <ul><li>准备</li><li>需求</li><li>功能模块</li><li>流程图</li><li>数据结构</li><li><ul><li>结构体</li><li>函数</li></ul></li><li>特殊函数</li><li><ul><li>通过首地址指针获取结构体数据</li><li>数组越界异常处理</li></ul></li></ul>

<h1>准备</h1> <ul><li>开发语言:GOLANG</li><li>开发工具:LiteIDE</li><li>开发环境:Windows</li><li>运行环境:Linux32</li></ul><h1>需求</h1> <pre><code>将抓拍机拍摄照片和记录信息json文件合成为一个文件: 1.通过内置Linux系统输入命令行提取参数进行打包; -i 目标源文件夹 -o 打包程序文件名 2.解析json中数据进行类型转换,重新编码; 3.在pkg中按字节首先存放json数据,再依次存入png文件二进制数据。 </code></pre> <h1>功能模块</h1> <pre><code>1.获取命令行指令; 2.解析json中数据,存入结构体; 3.类型和编码转换; 4.pkg数据写入。 </code></pre> <h1>流程图</h1>

<svg xmlns="http://www.w3.org/2000/svg" id="mermaid-svg-FAcl0PmU5PLm53x5" height="523.7593727111816" width="2081.609375" viewbox="0 0 2101.609375 543.7593727111816"><g><g class="output"><g class="clusters"/><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M72,146.65937423706055L97,146.65937423706055L122,146.65937423706055" marker-end="url(#arrowhead158)" style="fill:none"/><defs><marker id="arrowhead158" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M382,146.65937423706055L407,146.65937423706055L432.5,147.15937423706055" marker-end="url(#arrowhead159)" style="fill:none"/><defs><marker id="arrowhead159" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M572.0813917262517,186.26548251080882L651.6875,248.12187576293945L693.1875030517577,248.62187576293945" marker-end="url(#arrowhead160)" style="fill:none"/><defs><marker id="arrowhead160" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M569.5701856777188,105.54205991477936L651.6875,33L860.6125030517578,33L1069.5375061035156,33L1172.8562545776367,33L1276.1750030517578,33L1372.0734405517578,33L1467.9718780517578,33L1635.290626525879,33L1802.609375,33L1874.009375,92.5" marker-end="url(#arrowhead161)" style="fill:none"/><defs><marker id="arrowhead161" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M975.733613244395,195.3179859555769L1069.5375061035156,150.9625015258789L1172.8562545776367,150.9625015258789L1276.1750030517578,150.9625015258789L1372.0734405517578,150.9625015258789L1467.9718780517578,150.9625015258789L1635.290626525879,150.9625015258789L1802.609375,150.9625015258789L1843.609375,136.27601099495936" marker-end="url(#arrowhead162)" style="fill:none"/><defs><marker id="arrowhead162" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M997.3153668727709,280.3440058384106L1069.5375061035156,296.78125L1111.0375076293942,297.28125" marker-end="url(#arrowhead163)" style="fill:none"/><defs><marker id="arrowhead163" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1208.3533246726467,269.9595700950105L1276.1750030517578,216.12187576293945L1372.0734405517578,216.12187576293945L1467.9718780517578,216.12187576293945L1635.290626525879,216.12187576293945L1802.609375,216.12187576293945L1878.9801009705186,138.5" marker-end="url(#arrowhead164)" style="fill:none"/><defs><marker id="arrowhead164" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1208.3533263864583,324.6029312429362L1276.1750030517578,377.44062423706055L1317.1750030517578,377.44062423706055" marker-end="url(#arrowhead165)" style="fill:none"/><defs><marker id="arrowhead165" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1426.9718780517578,377.44062423706055L1467.9718780517578,377.44062423706055L1509.471879577637,377.94062423706043" marker-end="url(#arrowhead166)" style="fill:none"/><defs><marker id="arrowhead166" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1727.097290461401,342.9285381725825L1802.609375,313.28125L1890.096655771054,138.5" marker-end="url(#arrowhead167)" style="fill:none"/><defs><marker id="arrowhead167" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1746.8437720456204,393.2062317690764L1802.609375,400.44062423706055L1859.609375,400.44062423706055" marker-end="url(#arrowhead168)" style="fill:none"/><defs><marker id="arrowhead168" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1959.609375,115.5L1984.609375,115.5L2026.764680312551,225.12187576293945" marker-end="url(#arrowhead169)" style="fill:none"/><defs><marker id="arrowhead169" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1943.609375,400.44062423706055L1984.609375,400.44062423706055L2027.9084188685274,271.12187576293945" marker-end="url(#arrowhead170)" style="fill:none"/><defs><marker id="arrowhead170" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignobject width="0" height="0">
<span class="edgeLabel"/>
</foreignobject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignobject width="0" height="0">
<span class="edgeLabel"/>
</foreignobject></g></g><g class="edgeLabel" transform="translate(651.6875,248.12187576293945)" style="opacity: 1;"><g transform="translate(-16,-13)" class="label"><foreignobject width="32" height="26">
<span class="edgeLabel">成功</span>
</foreignobject></g></g><g class="edgeLabel" transform="translate(1276.1750030517578,33)" style="opacity: 1;"><g transform="translate(-16,-13)" class="label"><foreignobject width="32" height="26">
<span class="edgeLabel">失败</span>
</foreignobject></g></g><g class="edgeLabel" transform="translate(1372.0734405517578,150.9625015258789)" style="opacity: 1;"><g transform="translate(-16,-13)" class="label"><foreignobject width="32" height="26">
<span class="edgeLabel">失败</span>
</foreignobject></g></g><g class="edgeLabel" transform="translate(1069.5375061035156,296.78125)" style="opacity: 1;"><g transform="translate(-16,-13)" class="label"><foreignobject width="32" height="26">
<span class="edgeLabel">成功</span>
</foreignobject></g></g><g class="edgeLabel" transform="translate(1467.9718780517578,216.12187576293945)" style="opacity: 1;"><g transform="translate(-16,-13)" class="label"><foreignobject width="32" height="26">
<span class="edgeLabel">失败</span>
</foreignobject></g></g><g class="edgeLabel" transform="translate(1276.1750030517578,377.44062423706055)" style="opacity: 1;"><g transform="translate(-16,-13)" class="label"><foreignobject width="32" height="26">
<span class="edgeLabel">成功</span>
</foreignobject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignobject width="0" height="0">
<span class="edgeLabel"/>
</foreignobject></g></g><g class="edgeLabel" transform="translate(1802.609375,313.28125)" style="opacity: 1;"><g transform="translate(-16,-13)" class="label"><foreignobject width="32" height="26">
<span class="edgeLabel">失败</span>
</foreignobject></g></g><g class="edgeLabel" transform="translate(1802.609375,400.44062423706055)" style="opacity: 1;"><g transform="translate(-16,-13)" class="label"><foreignobject width="32" height="26">
<span class="edgeLabel">成功</span>
</foreignobject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignobject width="0" height="0">
<span class="edgeLabel"/>
</foreignobject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignobject width="0" height="0">
<span class="edgeLabel"/>
</foreignobject></g></g></g><g class="nodes"><g class="node" id="A" transform="translate(46,146.65937423706055)" style="opacity: 1;"><rect rx="5" ry="5" x="-26" y="-23" width="52" height="46"/><g class="label" transform="translate(0,0)"><g transform="translate(-16,-13)"><foreignobject width="32" height="26">
开始
</foreignobject></g></g></g><g class="node" id="B" transform="translate(252,146.65937423706055)" style="opacity: 1;"><rect rx="0" ry="0" x="-130" y="-23" width="260" height="46"/><g class="label" transform="translate(0,0)"><g transform="translate(-120,-13)"><foreignobject width="240" height="26">
从指令行获取来源地址和目标文件
</foreignobject></g></g></g><g class="node" id="C" transform="translate(521.34375,146.65937423706055)" style="opacity: 1;"><polygon points="89.34375,0 178.6875,-89.34375 89.34375,-178.6875 0,-89.34375" rx="5" ry="5" transform="translate(-89.34375,89.34375)"/><g class="label" transform="translate(0,0)"><g transform="translate(-78.6796875,-13)"><foreignobject width="157.359375" height="26">
从json中都去配置信息
</foreignobject></g></g></g><g class="node" id="D" transform="translate(860.6125030517578,248.12187576293945)" style="opacity: 1;"><polygon points="167.925,0 335.85,-167.925 167.925,-335.85 0,-167.925" rx="5" ry="5" transform="translate(-167.925,167.925)"/><g class="label" transform="translate(0,0)"><g transform="translate(-176.90625,-13)"><foreignobject width="353.8125" height="26">
将json文件中数据依次存放如与C#对应的结构体中
</foreignobject></g></g></g><g class="node" id="E" transform="translate(1901.609375,115.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-58" y="-23" width="116" height="46"/><g class="label" transform="translate(0,0)"><g transform="translate(-48,-13)"><foreignobject width="96" height="26">
文件创建失败
</foreignobject></g></g></g><g class="node" id="F" transform="translate(1172.8562545776367,296.78125)" style="opacity: 1;"><polygon points="62.31875,0 124.6375,-62.31875 62.31875,-124.6375 0,-62.31875" rx="5" ry="5" transform="translate(-62.31875,62.31875)"/><g class="label" transform="translate(0,0)"><g transform="translate(-44.8984375,-13)"><foreignobject width="89.796875" height="26">
创建pkg文件
</foreignobject></g></g></g><g class="node" id="G" transform="translate(1372.0734405517578,377.44062423706055)" style="opacity: 1;"><rect rx="0" ry="0" x="-54.8984375" y="-23" width="109.796875" height="46"/><g class="label" transform="translate(0,0)"><g transform="translate(-44.8984375,-13)"><foreignobject width="89.796875" height="26">
写入pkg文件
</foreignobject></g></g></g><g class="node" id="H" transform="translate(1635.290626525879,377.44062423706055)" style="opacity: 1;"><polygon points="126.31875000000001,0 252.63750000000002,-126.31875000000001 126.31875000000001,-252.63750000000002 0,-126.31875000000001" rx="5" ry="5" transform="translate(-126.31875000000001,126.31875000000001)"/><g class="label" transform="translate(0,0)"><g transform="translate(-124.8984375,-13)"><foreignobject width="249.796875" height="26">
一次拷贝图片二进制数据放入pkg中
</foreignobject></g></g></g><g class="node" id="I" transform="translate(1901.609375,400.44062423706055)" style="opacity: 1;"><rect rx="0" ry="0" x="-42" y="-23" width="84" height="46"/><g class="label" transform="translate(0,0)"><g transform="translate(-32,-13)"><foreignobject width="64" height="26">
创建成功
</foreignobject></g></g></g><g class="node" id="J" transform="translate(2035.609375,248.12187576293945)" style="opacity: 1;"><rect rx="5" ry="5" x="-26" y="-23" width="52" height="46"/><g class="label" transform="translate(0,0)"><g transform="translate(-16,-13)"><foreignobject width="32" height="26">
结束
</foreignobject></g></g></g></g></g></g></svg>
<h1>数据结构</h1> <h2>结构体</h2> <table><thead><tr><th>结构体字段</th><th>作用</th></tr></thead><tbody><tr><td>SnapFileAttrStruct</td><td>存放字节数据</td></tr><tr><td>device</td><td>设备信息</td></tr><tr><td>info</td><td>道路信息</td></tr><tr><td>xSXX</td><td>限速模式</td></tr><tr><td>record</td><td>记录信息</td></tr><tr><td>imgDatetime</td><td>图片时间信息</td></tr></tbody></table><h2>函数</h2> <table><thead><tr><th>函数名称</th><th>函数参数</th><th>函数返回值</th><th>函数用途</th></tr></thead><tbody><tr><td>main</td><td/><td/><td/></tr><tr><td>readConfig</td><td>fileName string</td><td>v caseJson , err error</td><td>从接送文件中读取数据存入caseJson结构体中</td></tr><tr><td>stringToUint8</td><td>s string</td><td>u uint8</td><td>string类型转换为uint8</td></tr><tr><td>intToString</td><td>i int</td><td>s string</td><td>int类型转换为string</td></tr><tr><td>memcpy</td><td>dst []byte, str string</td><td/><td>string赋值给字节数组</td></tr><tr><td>memcpyTime</td><td>dst []byte, src [8]byte, i int</td><td/><td>8字节数组赋值给字节数组</td></tr><tr><td>memcpyByte</td><td>dst , src []byte</td><td/><td>字节数组赋值给字节数组</td></tr><tr><td>timeTransfer</td><td>timestr string</td><td>datetime [8]uint8</td><td>将时间字符串转换为8字节数组-用于图片时间、有效时间</td></tr><tr><td>copyFile</td><td>dest src * os.File , offset int64</td><td/><td>将图片二进制数据复制到pkg文件中</td></tr><tr><td>handleCommandLine</td><td>r1 , r2 string</td><td/><td>获取命令行参数</td></tr><tr><td>UTF8ToGBK</td><td>s []byte</td><td>[]byte</td><td>UTF转换为GBK</td></tr></tbody></table><h1>特殊函数</h1> <h2>通过首地址指针获取结构体数据</h2> <pre><code>import ( "unsafe" ) dataBytes := (*[长度]byte)(unsafe.Pointer(&snap)) </code></pre> <h2>数组越界异常处理</h2> <pre><code>func memcpyByte( dst , src []byte) { defer func(){ recover() }() size := len(src) for i := 0 ; i < size ;i { dst[i] = src[i] } } </code></pre> 到此这篇关于“golang小项目-文件打包”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang打包和部署到centos7
基础配置篇:建立项目,为我的博客项目制定目录层次结构
Golang Module的使用
golang 扩展package 列表
用Golang撸了个文件监测、同步小工具
Golang环境安装&IDEA开发Golang
项目结构设置
04.Go项目布局-你如何设计项目结构
Go语言中的GOPATH解析
Go 语言编程 — go mod 依赖包管理

[关闭]
~ ~