Oberon/ETH Oberon/教程/壓縮
這些教程頁面由 André Fischer (afi) 編寫,並由 Hannes Marais 提供編輯幫助,託管在 ETHZ,並保留在 ETH 許可證 下。相關內容可以透過 Book.Tool 在系統中找到。擴充套件內容也可以在 紙質版 上找到。一些教程頁面位於 WayBack 存檔 中。
學習如何處理或建立壓縮檔案和歸檔檔案,這些檔案透過軟盤、FTP 和電子郵件分發。
預計時間:20 分鐘。
Compress 使用 LZSS 壓縮技術壓縮多個檔案並將它們打包到單個歸檔檔案中。一個歸檔(檔案)可以在所有 Oberon 平臺之間移植。按照慣例,歸檔檔名的最後一部分應該是 Arc。副檔名為 .Arc 的檔案可以直接使用命令 Desktops.OpenDoc 開啟(見下文)。
注意:Oberon 歸檔檔案是二進位制檔案。要透過電子郵件傳送它,必須由 AsciiCoder.CodeFiles 命令進行處理。
LZSS 使用基於詞典的壓縮方案:它使用之前見過的文字作為詞典,並將輸入文字中的短語替換為指向詞典的指標,以實現壓縮。LZSS 壓縮演算法高度不對稱。壓縮例程相當複雜,並且做了很多工作。相比之下,展開程式碼非常簡單,工作量很少。這使得 LZSS 成為需要壓縮一次並展開多次的資料的絕佳選擇。
有關 LZSS 壓縮技術的更多資訊,請參見
- 資料壓縮手冊
- 馬克·尼爾森
- M & T 出版社 - ISBN 0-13-202854-9
Compress 執行與常見的 Unix 程式 compress 和 uncompress 相同的功能,以及 Unix 磁帶歸檔程式 tar。TAR 只需將一組檔案組合成一個檔案,並且不執行任何壓縮。
請注意 Unix 和 Oberon 之間策略的差異。Unix .tar.Z 檔案是一個壓縮的(磁帶)歸檔檔案。Oberon 歸檔檔案包含單獨壓縮的檔案,這使得在歸檔檔案中新增、提取或刪除檔案變得容易。因此,Oberon 歸檔檔案的格式與 UNIX 實用程式產生的檔案的格式不相容。
歸檔檔案的維護工作從使用命令 Desktops.OpenDoc 開啟文件開始。嘗試使用檔名 Archive.Arc 的示例
- Desktops.OpenDoc Archive.Arc
這將開啟一個同名文件檢視器,顯示歸檔檔案中包含的檔案目錄。如果歸檔檔案尚不存在,則會自動建立。執行 Compress.Directory 命令也可以獲得相同的結果,該命令將在下面介紹。維護工作可以在選單欄中的命令按鈕的幫助下舒適地執行。標題欄中的每個按鈕(除了 [關閉] 以外)都執行 Compress 模組中定義的命令
[開啟 ^] Compress.Open ^ [新增 ^] Compress.Add ^ [提取 ^] Compress.Extract ^ [刪除 ^] Compress.Delete ^
這些命令將在下面介紹。
壓縮命令收集在 Compress.Tool.
Compress.Directory [\d] (archiveName | ^) 開啟一個名為 archiveName 的文字檢視器,列出歸檔檔案中包含的檔名。如果歸檔檔案尚不存在,則會自動建立。當存在選項 \d 時,將為每個檔案提供更多資訊:新增到歸檔檔案的日期和時間、壓縮後的位元組大小以及原始未壓縮檔案的百分比大小。
Compress.Add archiveName ({fileName} ~ | ^) 壓縮並將指定檔案新增到指定歸檔檔案中。如果名稱匹配的檔案已存在,則其名稱將附加一個序列號,如下所示:如果 Char.Mod 存在,則新增 Char.Mod0。
Compress.ExtractAll archiveName 從指定歸檔檔案中提取並解壓縮所有檔案,並將它們放置在當前目錄中。
注意:如果名稱匹配的檔案已存在,則會被覆蓋。警告訊息將寫入 Oberon 日誌。
Compress.Extract archiveName ({fileName} ~ | ^) 從指定歸檔檔案中提取並解壓縮指定檔案,並將它們放置在當前目錄中。
注意:如果名稱匹配的檔案已存在,則會被覆蓋。警告訊息將寫入 Oberon 日誌。
Compress.Delete archiveName ({fileName} ~ | ^) 從指定歸檔檔案中刪除指定檔案。
Compress.Open archiveName (fileName | ^) 開啟一個名為fileName 的文件檢視器,顯示命名存檔中的命名檔案。如果您想顯示壓縮檔案的內容,而不實際建立(或替換)當前目錄中的檔案,請使用此命令。
Definitions.Arc 是 Oberon 中一個重要且核心的存檔,因為它是 Watson 可能被請求搜尋模組定義的資訊庫。顯示儲存在該存檔中的模組定義的另一種方法是使用 Desktops.OpenDoc Definitions.Arc 顯示其目錄,在列表中選擇一個名稱,然後單擊標題欄中的 [開啟 ^] 按鈕,或使用 Compress.Open 命令。
AsciiCoder 編碼和解碼文字或最近選擇的文字,包括出現在文件檢視器中的小工具。它也可用於對任意檔案進行編碼和解碼。編碼生成的 資料流僅包含可列印的 ASCII 字元,適合透過電子郵件傳送。它始終顯示在文字檢視器中,可以在其中進行編輯,例如,成為電子郵件訊息的一部分。另外,編碼資料前面會加上相應的解碼命令,即根據情況使用 AsciiCoder.DecodeText 或 AsciiCoder.DecodeFiles。解碼命令將自動獲取關於要解碼的資訊量的 資訊,即它知道編碼資料在何處結束。收到此類電子郵件的 Oberon 使用者可以立即解碼資訊。
AsciiCoder.CodeText [%] (* | @) 對標記的檢視器 (*) 中的文字(包括小工具)進行編碼,或者如果命令後跟 @,則對最近選擇中包含的文字進行編碼。如果存在 % 選項,則文字會同時被壓縮。一個名為“AsciiCoder.CodeText”的文件檢視器會自動開啟。它顯示編碼資料,前面加上相應的 AsciiCoder.DecodeText [%] 命令。
AsciiCoder.CodeFiles [%] ({fileName} ~ | ^) 對列表中命名或選擇中命名的所有檔案進行編碼。如果存在 % 選項,則檔案會同時被壓縮。一個名為“AsciiCoder.CodeFiles”的文件檢視器會自動開啟。它顯示編碼資料,前面加上相應的 AsciiCoder.DecodeFiles [%] {fileName} ~ 命令。
AsciiCoder.DecodeText [%] (text | @) 解碼緊隨命令之後的 Ascii 編碼文字,或從最近選擇的開頭開始的文字。一個名為“AsciiCoder.DecodeText”的文件檢視器會自動開啟,顯示解碼的資訊。如果存在 % 選項,則文字會同時被擴充套件。
AsciiCoder.DecodeFiles [%] ({fileName} ~ text | @) 解碼緊隨命令之後的 Ascii 編碼文字,或從最近選擇的開頭開始的文字。包含的檔案會寫入當前目錄。現有的檔案不會被覆蓋,因為它們首先會被重新命名為 .Bak 檔案。檔名必須出現在選擇的最前面,在編碼資料之前。AsciiCoder.CodeFiles 命令負責這一點。如果存在 % 選項,則檔案會同時被擴充套件。
這 Desktops.OpenDoc AsciiCoder.Tool 在手帕中展示了剛才描述的所有命令的有用集合,包括所有變體。
Base64 模組對檔案進行編碼和解碼,甚至包括小工具。編碼生成的 資料流僅包含 64 個 ASCII 字元,適合透過電子郵件傳送。它始終顯示在文字檢視器中,可以在其中進行編輯,例如,成為電子郵件訊息的一部分。
Base64.Encode fileName 對命名檔案進行編碼。一個名為“Encode”的文件檢視器會自動開啟。它顯示編碼資料。
Base64.Decode fileName (~ | ^) 解碼緊隨 fileName ~ 之後的編碼文字,或者如果 fileName 後面跟著 ^,則解碼從最近選擇的開頭開始的文字。結果將寫入當前目錄中的命名檔案。
注意:如果硬碟上存在具有匹配名稱的檔案,則會覆蓋該檔案。
Unix uuencoded 檔案 經常釋出到 Usenet 新聞組或作為郵件訊息傳送。uuencoded 檔案是二進位制檔案,已透過 Unix uuencode 程式編碼為文字檔案。請注意,此轉換會擴充套件二進位制檔案,而不是壓縮它!
如果您碰巧收到此類檔案,您可以使用 UUDecoder.Decode 命令對其進行解碼,該命令在 UUDecoder.Tool 中有說明,並在下面列出。
UUDecoder.Decode begin .... | @ 解碼緊隨命令之後的文字,或從最近選擇的開頭開始的文字。
UUDecoder.Decode {fileName} ~ | ^ 對列表中命名或選擇中命名的所有檔案進行解碼。
以壓縮格式或 Oberon 存檔檔案形式分發您自定義開發的 Oberon 擴充套件,例如透過電子郵件或透過 FTP 將其上傳到 FTP 伺服器。
A
存檔
AsciiCoder.CodeFiles
AsciiCoder.CodeText
AsciiCoder.DecodeFiles
AsciiCoder.DecodeText
AsciiCoder.Tool
AsciiCoder
B
Base64.Decode
Base64.Encode
Base64
C
compress (Unix)
Compress.Add
Compress.Delete
Compress.Directory
Compress.ExtractAll
Compress.Extract
Compress.Open
Compress.Tool
compress
D
E
T
U
uudecode (Unix)
UUDecoder.Decode
UUDecoder.Tool
1996年7月6日修訂
1997年5月30日安裝

