Go 文件壓縮解壓

在Go語言中,archive/zip包提供了創建、讀取和解壓縮ZIP格式文件的功能。

一、創建ZIP文件并添加內容----壓縮

package mainimport ("archive/zip""bytes""fmt""io""log""os"
)func main() {// 創建一個緩沖區來存儲ZIP文件的內容buf := new(bytes.Buffer)// 創建一個新的ZIP文件zipWriter := zip.NewWriter(buf)// 添加文件到ZIP文件中addFileToZip(zipWriter, "file1.txt", []byte("向file1寫入內容"))addFileToZip(zipWriter, "file2.txt", []byte("向file2寫入內容"))// 關閉ZIP文件err := zipWriter.Close()if err != nil {log.Fatal(err)}// 將ZIP文件內容寫入磁盤file, err := os.Create("testFileZip.zip")if err != nil {log.Fatal(err)}defer file.Close()_, err = io.Copy(file, buf)if err != nil {log.Fatal(err)}fmt.Println("壓縮文件創建成功!")
}// 輔助函數,用于將字節數據作為文件添加到ZIP中
func addFileToZip(zipWriter *zip.Writer, fileName string, data []byte) error {header := &zip.FileHeader{Name:   fileName,Method: zip.Deflate,}writer, err := zipWriter.CreateHeader(header)if err != nil {return err}_, err = writer.Write(data)return err
}

二、解壓縮ZIP文件----讀取并解壓縮一個ZIP文件

package mainimport ("archive/zip""fmt""io""log""os""path/filepath"
)func main() {//讀取zip壓縮文件reader, err := zip.OpenReader("testFileZip.zip")if err != nil {log.Fatal(err)}defer reader.Close()folder := "testFileZip"_, err = os.Stat(folder)              // os.Stat 函數來獲取 folder 指定路徑的狀態信息。if err != nil && os.IsNotExist(err) { //判斷是否存在err = os.Mkdir(folder, os.ModePerm) //不存在就創建,os.ModePerm是Go語言中定義的默認權限,通常用于創建文件或目錄。if err != nil {log.Fatal(err)}}//提取壓縮文件for _, file := range reader.File {fmt.Println("提取到的文件有:", file.Name)// 創建目標文件的路徑targetPath := filepath.Join("testFileZip", file.Name)// 創建目標文件outputFile, err := os.Create(targetPath)if err != nil {log.Fatal(err)}defer outputFile.Close()// 讀取并解壓文件內容到目標文件fileReader, err := file.Open()if err != nil {log.Fatal(err)}defer fileReader.Close()_, err = io.Copy(outputFile, fileReader)if err != nil {log.Fatal(err)}}fmt.Println("已成功提取所有文件")
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23940.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23940.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23940.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

el-input中change事件造成的坑

el-input中change事件造成的坑 一、change事件定義二、如果僅回車時候觸發 一、change事件定義 僅在輸入框失去焦點或用戶按下回車時觸發 二、如果僅回車時候觸發 <el-inputv-model.trim"questionInput"placeholder"請輸入你的問題&#xff0c;按回車發送&…

智慧視覺怎么識別視頻?智慧機器視覺是通過什么步驟識別視頻的?

智慧視覺功能怎么識別視頻&#xff1f;智慧視覺是搭載在智能設備比如手機、AI盒子、機器視覺系統上的一個應用程序或特性&#xff0c;采用計算機視覺和人工智能的技術來識別圖像或視頻中的內容。如果想了解視頻識別&#xff0c;就要明白智慧視覺功能會涉及的以下幾個關鍵步驟和…

pxe自動裝機

概念 pxe是c/s模式。允許客戶端通過網絡從遠程服務器&#xff08;服務端&#xff09;下載引導鏡像&#xff0c;加載安裝文件&#xff0c;實現自動化安裝操作系統。 無人值守&#xff1a;安裝選項不需要人為干預&#xff0c;可以自動化實現。 pxe的優點&#xff1a;1.規模化&…

機器人阻抗控制中的機械阻抗模型

機器人阻抗控制中的機械阻抗模型主要涉及到通過修改機器人與環境接觸作業的動力學模型&#xff0c;使其等效為一個期望的阻抗&#xff08;彈簧-質量-阻尼&#xff09;模型。以下是對機械阻抗模型在機器人阻抗控制中的詳細解釋&#xff1a; 阻抗控制原理&#xff1a; 機器人阻抗…

Python——泰坦尼克號數據分析

目錄 ??1.數據集(部分數據) ?? 2、導入數據集與必要模塊 ?? 3.數據預處理 1?? isnull函數查看有無缺失值 2??fillna函數填充缺失值 ?? Age字段使用平均值填充缺失值 ?? Embarked字段填充缺失值 3?? 刪除缺失值較多的字段 ?? 4.數據可視化 1?? di…

流媒體服務器SMS-語音對講(二)

1.簡介 上篇文件介紹了流媒體與設備之間可能的交互場景&#xff0c;本文將介紹客戶端或者web端與攝像頭對講的總體流程。 老規矩&#xff0c;介紹一下本人的開源流媒體&#xff0c;點個star&#xff0c;有興趣一起開發的朋友也可以聯系本人&#xff1a;https://gitee.com/inyem…

PostgreSQL的發布和訂閱功能

發布和訂閱功能在 PostgreSQL 9.0 版本中首次引入,并進一步改進和增強了后續版本中。所以,從 PostgreSQL 9.0 版本開始,就可以使用發布和訂閱功能來實現數據復制和同步 發布和訂閱功能在 PostgreSQL 中提供了一種靈活、可靠的數據復制和同步機制,具有許多優點和一些缺點:…

[數據集][目標檢測]醫療防護服檢測數據集VOC+YOLO格式649張7類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;649 標注數量(xml文件個數)&#xff1a;649 標注數量(txt文件個數)&#xff1a;649 標注類別…

echarts學習: 在圖表中添加多條y軸會怎么樣?

前言 在撰寫如何繪制雙y軸圖表文章時&#xff0c;我突然萌生出了一個想法&#xff0c;如果給圖表添加兩個以上的y軸會怎么樣呢? 帶著這個問題我開始了自己的探索之旅。 我找到了一篇優秀的文章作為參考&#xff0c;雖然它需要付費&#xff0c;但是不要緊&#xff0c;文中免費…

Vulnhub-DC-4

靶機IP:192.168.20.138 kaliIP:192.168.20.128 網絡有問題的可以看下搭建Vulnhub靶機網絡問題(獲取不到IP) 信息收集 nmap掃下端口及版本 dirsearch掃下目錄 沒發現什么敏感信息&#xff0c;看下前端界面 想到會不會存在SQL注入&#xff0c;弱密碼等漏洞。 經過測試SQL注入…

k8s網絡問題以及容器跨宿主機通信原理

【0】資源配置文件 [rootmcwk8s03 mcwtest]# ls mcwdeploy.yaml [rootmcwk8s03 mcwtest]# cat mcwdeploy.yaml apiVersion: apps/v1 kind: Deployment metadata:labels:app: mcwpythonname: mcwtest-deploy spec:replicas: 1selector:matchLabels:app: mcwpythontemplate:met…

Linux進程間通信之管道

進程間通信介紹&#xff1a; 進程間通信的概念&#xff1a; 進程間通信簡稱IPC&#xff08;Interprocess communication&#xff09;&#xff0c;進程間通信就是在不同進程之間傳播或交換信息。 進程間通信的目的&#xff1a; 數據傳輸&#xff1a; 一個進程需要將它的數據…

開源WebGIS全流程常用技術棧

1 數據生產 1.1 uDig uDig&#xff08;http://udig.refractions.net/&#xff09;是一個基于Java開源的桌面應用框架&#xff0c;它構建在Eclipse RCP和GeoTools&#xff08;一個開源的Java GIS包)上。可以進行shp格式地圖文件的編輯和查看&#xff1b;是一個開源空間數據查看…

?在哪些場景下,使用SOCKS5代理會特別有用?(socks5代理ip)?

SOCKS5代理作為網絡協議轉換的利器&#xff0c;其獨特功能在眾多實際場景中展現出了極大的價值。以下是幾個特定場景&#xff0c;其中SOCKS5代理的使用將變得尤為重要&#xff1a; 一、網絡安全與隱私訪問 1.高級滲透測試&#xff1a;在網絡安全領域&#xff0c;滲透測試人員…

Java 異常處理 - 自定義異常

在Java中&#xff0c;自定義異常是一種創建新異常類的方式&#xff0c;這些異常類繼承自Throwable類或其子類Exception&#xff08;或RuntimeException&#xff0c;如果它是運行時異常的話&#xff09;。自定義異常通常用于描述特定于應用程序的錯誤情況&#xff0c;以便為調用…

MS21112S單通道 LVDS 差分線路接收器

MS21112S 是一款單通道低壓差分信號 (LVDS) 線 路接收器。在輸入共模電壓范圍內&#xff0c;差分接收器可以 將 100mV 的差分輸入電壓轉換成有效的邏輯輸出。 該芯片可應用于 100Ω 的受控阻抗介質上&#xff0c;進行點對 點基帶數據傳輸。傳輸介質可以是印刷電路板、…

配音方面目前可以用AIGC替代嗎?( 計育韜老師高校公益巡講答疑實錄2024)

這是計育韜老師第 8 次開展面向全國高校的新媒體技術公益巡講活動了。而在每場講座尾聲&#xff0c;互動答疑環節往往反映了高校師生當前最普遍的運營困境&#xff0c;特此計老師在現場即興答疑之外&#xff0c;會盡量選擇有較高價值的提問進行文字答疑梳理。 *本輪巡講主題除了…

360誤刪掉的文件怎么恢復?3種文件找回辦法!

360是一款電腦安全輔助軟件&#xff0c;可以用它來清理垃圾、查殺病毒、修復系統等。然而&#xff0c;有時文件可能會被360誤認為是垃圾而自動清理&#xff0c;造成重要文件丟失&#xff0c;那么360刪掉的文件怎么恢復&#xff1f;下面&#xff0c;讓我們一起來看看如何恢復文件…

三維點云擬合平面推導及源代碼C++

1、背景介紹 實際中,很多人工構造物是由平面結構構造而成,如下圖所示,為一典型的由多個平面組成的人工構筑物。因此,根據離散點擬合成平面,獲取擬合平面方程,是點云數據處理中非常常見的數據處理操作。 2、平面擬合參數推導 基于若離散點,估算平面方程過程如下: 3、程序…