2. 7. 2024 7:32 (aktualizováno)
Pavel Ponec
Potřebujete přenést občas binární soubory v textovém formátu? Máte na cílovém prostředí nainstalovaný Java runtime verze 17 nebo vyšší? Pak by vám mohl přijít vhod nástroj, který umí sestavit samorozbalitelný skript v kódu Java. Archivovat lze soubory jak textové tak binární. V obou případech se obsah souboru nejdříve komprimuje a pak zakóduje pomocí base64. U velkých zdrojů však může dojít k překročení limitů zdrojového kódu jazyka Java a tak úhrnná velikost binárních dat by výrazně neměla překročit 300 MB (testováno na video souboru). U textů bude limit vyšší, záleží na reálné kompresi. Příklad vytvoření archivu následuje:
java PPUtils.java saveArchive MyArchive.java File1.txt File2.txt …
Kde:
- java – pokud spustitelný soubor není na seznamu PATH, použijte absolutní cestu,
- PPUtils.java – nástroj (skript v jazyce Java 17), který sestavení archivu provádí,
- saveArchive – příkaz pro uložení Java archivu do Java souboru, alternativně lze použít zkratku sa,
- MyArchive.java - název výsledného archivu, by měl dodržovat jmenné konvence jazyka Java (tedy žádné mezery, pomlčky, ani jiné speciální znaky), nezbytná přípona je java,
- File1.txt File2.txt – jeden či více zdrojových souborů pro archivaci, názvy lze doplnit (relativní) cestou.
Altenativně lze archivovat obsah celého adresáře (v aktuální verzi bez rekurze) příkazem:
java PPUtils.java saveArchive MyArchive.java myDirectory
Čtení i zápis dat prochází jedním zřetězeným streamem, aby se minimalizovaly nároky na paměť a podobně to funguje také při rozbalení. Vytvořený archiv lze pak editovat běžným textovým editorem a dodatečné odebrání vybraných souborů z archivu by nemělo činit problém (pokud tedy editor dokáže načíst archiv do své paměti).
Soubory archivu lze obnovit zápisem názvu archivu (Java scriptu), který je uveden příkazem java. Pokud soubory již existují budou v tichosti přepsány.
Sestavení archivu i obnovení bylo testováno na operačních systémech Windows a Linux. Třída PPUtils je k dispozici pod licencí Apache License, Version 2.0 a nabízí i některé další služby (pro příkazový řádek), k popisu se dostanu snad někdy příště.
Odkaz ke stažení je zde: