# WinRar aus Java aufrufen



## Ellie (6. Okt 2007)

Hallo!

Kann man mit Java-Mitteln eigentlich auf andere Programme zugreifen? Ich würd gern mit meinem Javaprogramm Rar-Archive erstellen und will die Split-Funktion nutzen (dabei werden große Dateien in Stücke zerteilt), die anscheinend nur von WinRar zur Verfügung gestellt wird. Geht das? Geht das Zerteilen vielleicht mit Java-Mitteln?

Danke.


----------



## Kim Stebel (6. Okt 2007)

Runtime.getRuntime().exec("/path/to/your/program");


----------



## Ellie (6. Okt 2007)

Vielen Dank, hab letztlich nur so viel Code gebraucht:


```
import java.io.IOException;

public class OpenRarTest {
	
	public static void main (String[] args) throws IOException {
		
		Runtime.getRuntime().exec("C://Programme/WinRAR/rar.exe a -v4k test");
	}
}
```

»4k« in den Parametern gibt dabei die Größe der Teilarchive an.
Noch werden die Dateien im falschen Verzeichnis erstellt (dort, wo die .class liegt), aber dem lässt sich sicher leicht beikommen.


----------



## Loep (6. Okt 2007)

Ruf die mal "rar.exe --help" per Windows-Commandline auf, dann findest du auch heraus wie du angibst, wo das Archive erstellt werden soll.


----------



## Ellie (7. Okt 2007)

Ja, hab's schon durch Ausprobieren gefunden: Erst Zielverzeichnis angeben, dann die zu archivierende Datei.


----------



## Wildcard (8. Okt 2007)

Wenn du entpacken willst kannst du auch die Java Bibliothek nehmen. Wenn du unbedingt das proprietäre rar entpacken willst, kannst du auch die Java Bindings von 7zip verwenden.


----------



## Loep (8. Okt 2007)

Es geht um Packen, nicht um Entpacken.


----------



## Wildcard (8. Okt 2007)

Loep hat gesagt.:
			
		

> Es geht um Packen, nicht um Entpacken.


In dem Fall würde ich mir erst recht überlegen ein freies Format zu verwenden.
Besonders als Linux Nutzer bin ich immer recht begeistert wenn jemand ein nützliches Programm schreibt, dann jedoch alles zerstört in dem er davon ausgeht das ein proprietäres Programm installiert ist, obwohl es wesentliche bessere Möglichkeiten gibt das Problem zu lösen.


----------



## Ellie (8. Okt 2007)

Danke für den Anstoß, hab noch mal gegoogelt und 7-Zip unterstützt tatsächlich ebenfalls das Erstellen von Teilarchiven. Da es sich auch per Kommandozeile ansteuern lässt, werde ich es wohl neben WinRar zur Auswahl stellen.


----------



## Wildcard (8. Okt 2007)

Es gibt wie gesagt auch eine Java lib für 7Zip. Damit kannst du direkt Archive erzeugen, ohne den Umweg über die Runtime zu gehen und die Plattformunabhängigkeit zu verlieren.


----------



## Ellie (13. Okt 2007)

Wildcard, kannst du eine konkrete nennen? Ich hab jetzt mehrmals nach einer 7-Zip Library in Java gesucht, aber nur diese Sachen gefunden:
(LZMA ist der Kompressionsalgorithmus von 7-Zip)

1. Das LZMA-SDK mit einer Java-Implementierung
Enthält keinerlei Dokumentation. Die Quellcode-Dateien sind nicht auskommentiert, folglich nützen mir auch Javadocs wenig.
2. LZMA Streams in Java 
Ebenso. (In beiden Fällen ließen sich auch mit Google keine Dokumentationen oder Tutorials finden.)
3. Es gibt noch eine Library namens J7Zip, aber die kann nur entpacken, nicht archivieren.

Ich sollte vielleicht mal einen Extrathread mit der Frage nach Java-7-Zip aufmachen.


----------

