Zip

使用 7z 壓縮 epub 電子書

製作 epub 電子書並不是很困難,基本上就是將一些純文字的 xhtml 文件,就類似 html 網頁,再加上圖檔、css 格式檔等,就可以做出很簡單的電子書。

只是在製作的過程,要添加一些文件,記錄有哪些檔案在電子書中,這些不是本文介紹的重點,網路上可以找到一些規範。

 

將這些文件做成 epub 電子書,其實就是用 zip 的格式壓縮即可。反之,只要將副檔名 epub 改名成 zip,就可以很容易解開來看裡面的內容了。

 

雖然用 zip 壓縮即可,但還是有一個規則,就是第一個檔案必須是指定的 mimetype 檔案,而且這個檔案不能壓縮。

 

接著其它的檔案再陸續加入壓縮檔即可。

 

原本,我以為用 7z 如下的命令就可以很簡單做出電子書:

 

7z a -mx0 mybook.epub mimetype

7z a -x!mimetype mybook.epub *

 

重要度:
文章分類:
電腦標籤:

在 C# 解壓縮整個檔案(可覆寫舊檔)

最近在用 C# 寫程式,處理到解壓縮的部份,雖然它有很方便的方法

 

ZipFile.ExtractToDirectory(壓縮檔, 目的目錄);

 

不過實測後,發現一個問題,若目的已有相同的檔案,則會産生錯誤,所以要自行解決這個問題。

 

我原本想過三個方法。

 

第一個是先解壓縮在其它目錄,再全部移到指定的目錄,但缺點是可能會佔用太多空間。如果原本的檔案就很大,要解開的檔案也很大,硬碟空間不夠的情況,解壓縮就會失敗,所以這個方法就先放棄了。

 

第二個方去是先逐一檢查檔案是否存在,存在就先刪除。如此一來,先把舊檔案刪掉,空間就會多一點,比較不擔心空間不夠的問題,最後再用 ZipFile.ExtractToDirectory 解壓縮至指定目錄。

 

第三個方法同上,只是突然想到,乾脆在檢查是否存在之後,就直接解壓縮該檔案,不用等到最後再全部解壓縮。

 

重要度:
文章分類:

Swift 使用 ZipArchive 解/壓縮檔案

工作中有需要使用到壓縮與解壓縮 zip 檔案,原本 Mac 以為內建的壓縮功能就可以做到,如下:

https://developer.apple.com/documentation/compression

結果試了半天,也查了一堆資料,好像都無法做到。在查詢資料的過程中,也看到很多人推薦 ZipArchive,我也就用它來測試了。

https://github.com/ZipArchive/ZipArchive

ZipArchive 是 Objective-C 寫的專案,我是要用 Swift 去執行,底下記錄了詳細過程。如果對於 Swift 連結 Objective-C 想多了解一點,可參考這篇:Swift 連結 Swift、Objective-C、C++

ZipArchive 的 Github 專案上有教導如何安裝使用,因為我沒有使用其他安裝工具,所以我採取手動安裝,它主要方法有四:

  1. Add the SSZipArchive and minizip folders to your project.

  2. Add the libz and libiconv libraries to your target.

  3. Add the Security framework to your target.

  4. Add the following GCC_PREPROCESSOR_DEFINITIONS: HAVE_INTTYPES_H HAVE_PKCRYPT HAVE_STDINT_H HAVE_WZAES HAVE_ZLIB $(inherited).

 

底下逐一記錄過程。

重要度:
借我放一下廣告
訂閱 Zip