Komprimieren Sie mit dem Linux-Zip-Befehl auf der Java-Seite
Wenn Sie den zip-Befehl von Linux auf der Java-Seite aufrufen möchten, können Sie ProcessBuilder verwenden.
Beispiel 1:
Wenn Sie alle Verzeichnisse behalten
List commandList = new ArrayList();
commandList.add("-r");
ProcessBuilder pb =new ProcessBuilder(commandList);
Beispiel 2:
Wenn das Verzeichnis nicht beibehalten wird (Fehler, wenn derselbe Dateiname verwendet wird)
List commandList = new ArrayList();
commandList.add("-j");
ProcessBuilder pb =new ProcessBuilder(commandList);
LINUX zip Befehlsliste
-f freshen: only changed files
-u update: only changed or new files
-d delete entries in zipfile
-m move into zipfile (delete OS files)
-r recurse into directories
-j junk (don't record) directory names
-0 store only
-l convert LF to CR LF (-ll CR LF to LF)
-1 compress faster
-9 compress better
-q quiet operation
-v verbose operation/print version info
-c add one-line comments
-z add zipfile comment
-@ read names from stdin
-o make zipfile as old as latest entry
-x exclude the following names
-i include only the following names
-F fix zipfile (-FF try harder)
-D do not add directory entries
-A adjust self-extracting exe
-J junk zipfile prefix (unzipsfx)
-T test zipfile integrity
-X eXclude eXtra file attributes
-y store symbolic links as the link instead of the referenced file
-e encrypt
-n don't compress these suffixes
Beispiel 3 Was ist in den folgenden Fällen zu tun?
Ordnerformat: / home / AB / CD / + Verschiedene Dateien und Unterordner
Eingabeperspektive
/home/AB/CD/
Nach der Komprimierung (/ home / AB / CD / nicht enthalten)
各種ファイルとサブフォルダ.zip
Versuchen Sie es und der Befehl unten ist gut.
pb = new ProcessBuilder("sh", "-c", “zip -r test.zip ./*”)).directory(new File("/home/AB/CD/"));
Sie können auch auf die gleiche Weise schreiben.
pb = new ProcessBuilder("/bin/sh", "-c", “zip -r test.zip ./*”)).directory(new File("/home/AB/CD/"));
pb = new ProcessBuilder("/bin/bash", "-c", “zip -r test.zip ./*”)).directory(new File("/home/AB/CD/"));