Ordner aus Jar - File auf Festplatte kopieren?

Status
Nicht offen für weitere Antworten.

geneticZ

Bekanntes Mitglied
Hallo allerseits,
ich habe in einem Jar - File einen Ordner, beispielsweise images/ der Bilder enthält und hätte diese gerne an einen bestimmten Ort kopiert auf meiner Festplatte.

Wie muss ich da vorgehen?
Ich habe es schonmal mit dem copyDir Skript aus den FAQs versucht, bin da aber nicht so wirklich weiter gekommen.
Vor allem bei der Quelldatei bleibe ich da denke ich hängen...

vielen Dank für eure Hilfe
mfg
geneticZ
 

Wildcard

Top Contributor
Da es in einem jar keine Verzeichnisse, sondern nur Entries gibt, funktioniert das out-of-the-box gar nicht.
Eine Möglichkeit besteht darin, die Entries auszuwerten und alles was mit images beginnt wird kopiert.
Die andere Möglichkeit ist eine externe Lib wie TrueZip dafür zu verwenden.
 

geneticZ

Bekanntes Mitglied
oh, also das müsst ihr mir genauer erklären! :(

Also ich habe in meiner Jar einen Ordner der samt Inhalt einfach nur auf die Festplatte gebracht werden soll.
Wie muss ich nun vorgehen?

Bzw was ist da so die "normale" Lösung auch bezüglich True Zip usw?
Wie würde das dann funktionieren?

Danke für die Hilfe
mfg
geneticZ
 

Wildcard

Top Contributor
Du hast in einem Jar kein Verzeichnis (ja, so heißen die, ein Ordner ist eine visuelle Repräsentation eines Verzeichnisses), sondern einen Zip-Entry. Das ist kein Verzeichnis, sondern ein String über den bytes assoziert werden können.
Ich würde was immer du in dem Jar verpacken willst in ein zip stecken, das zip per getResource aus dem Jar holen und das dann entpacken.
 

geneticZ

Bekanntes Mitglied
Hallo,
sorry ich komm damit nicht wirklich klar!
Bin leider erst auf Java umgestiegen :cry:

Was ich bis jetzt gemacht habe:

Ich habe eine jar Datei und im Jar ein .rar-File in dem sich eben zb nur die Bilder befinden.
Will ich jetzt auf diese Bilder zugreifen und in ein neues Verzeichnis auf meiner Festplatte kopieren,
muss ich mit dem Befehl getResource() arbeiten... richtig?
Code:
InputStream in1 = cpyFile.class.getResourceAsStream( "meinJarFile.jar"
                           + System.getProperty("file.separator")
                           + meinRarFile.rar
                           + System.getProperty("file.separator")
                           + "meinBild.jpg" );

Oder wie funktioniert das?
Bin echt Ahnungslos :(

Danke
 

geneticZ

Bekanntes Mitglied
Hallo,
erstmal Danke für das Skript, dass hat mir wirklich sehr weitergeholfen.
An einer Sache hänge ich jedoch nach wie vor :cry:

Ich schaffe es nun ein bestehendes Jar File, dass an einer vorgegebenen Position auf meiner Festplatte liegt,
auszulesen und in ein anderes Verzeichnis zu kopieren! Soweit ist das schonmal gut...

Womit ich nun Probleme habe ist das auslesen des Jar Files welches in einem anderen Jar-File das ausgeführt wird drinnen steckt.
Ich weiss das soll ich damit machen
Code:
getClass().getResourceAsStream("meinJar.jar");

bekomm das aber leider nich gebacken.

Code:
new ZipArchiveExtractor().extractArchive(new File(
		"d:/meinJar.jar"), new File(
		"c:/meinJar"));

So gehts bereits...
Wie gesagt aber aus nem Jar das Jar auszulesen und dann als new File zu übergeben, dass klappt leider noch gar nicht :roll:

Danke für die Hilfe
geneticZ
 

geneticZ

Bekanntes Mitglied
Sorry ich schaff es nich :(

Code:
public void readJar() throws Exception{
			InputStream quelle = getClass().getResourceAsStream("Script.jar");
			String rFile = quelle.toString();
			new ZipArchiveExtractor().extractArchive(new File(
					rFile), new File(
					"c:/SCRIPT"));
		}

Ich weiss dass es nicht stimmt, aber ich kapier einfach nicht wie das laufen soll.

Die 2 Hauptprobleme für mich als Unwissenden sind:
- getClass() darf in keiner static function sein, ich weiss nicht wie ich die Funktion sonst ansprechen kann.
- die Konvertierung von InputStream auf File

Danke für die Hilfe
geneticZ
 

Wildcard

Top Contributor
-In einer statischen Methode: DeineClass.class.getResource
-InputStreams werden nicht auf File 'konvertiert'. In einem jar sind nunmal keine Dateien, sondern nur resourcen, mehr als einen InputStream bekommst du nicht.
 

geneticZ

Bekanntes Mitglied
Wildcard hat gesagt.:
-InputStreams werden nicht auf File 'konvertiert'. In einem jar sind nunmal keine Dateien, sondern nur resourcen, mehr als einen InputStream bekommst du nicht.

Ok, aber dann kann ich nicht mehr iterativ bzw mit enumeration durch die Resourcen gehen. :?
Wie soll ich das dann machen

Hier der Code:
Code:
public void extractArchive(InputStream quelle, File destDir) throws Exception {
		if (!destDir.exists()) {
			destDir.mkdir();
		}

		InputStream zipFile = quelle; // hier wäre es normalerweise eine File Variable!!!
		Enumeration entries = zipFile.entries();

		byte[] buffer = new byte[16384];
		int len;
		while (entries.hasMoreElements()) {
			ZipEntry entry = (ZipEntry) entries.nextElement();

			String entryFileName = entry.getName();

			File dir = buildDirectoryHierarchyFor(entryFileName, destDir);
			if (!dir.exists()) {
				dir.mkdirs();
			}

			if (!entry.isDirectory()) {
				BufferedOutputStream bos = new BufferedOutputStream(
						new FileOutputStream(new File(destDir, entryFileName)));

				BufferedInputStream bis = new BufferedInputStream(zipFile
						.getInputStream(entry));

				while ((len = bis.read(buffer)) > 0) {
					bos.write(buffer, 0, len);
				}

				bos.flush();
				bos.close();
				bis.close();
			}
		}
	}

Vielen Dank für die Hilfe :toll:
 

geneticZ

Bekanntes Mitglied
Wildcard hat gesagt.:
ZipInputStream. Das hatte ich dir aber schon geschrieben

langsam geh ich kaputt :autsch:

ZipInputStream kann ich auch nicht mit nem Iterator durchlaufen...
Schau mal bitte ob das so passt:

Code:
public static void main(String[] args, String path) throws Exception {
		ZipInputStream quelle = (ZipInputStream) UNZIP.class.getResourceAsStream("Script.jar");
		new UNZIP().extractArchive(quelle, new File(
				"c:/SCRIPT"));
	}
}

ich kann nur mit nem Cast C.class.getResourceAsStream("") verwenden :(

Code:
public void extractArchive(ZipInputStream archive, File destDir) throws Exception {
		if (!destDir.exists()) {
			destDir.mkdir();
		}
		ZipInputStream quelle = new ZipInputStream(archive);
		for(Iterator<ZipInputStream> iter =  quelle.iterator(); iter.hasNext();){ //HIER SAGT ER ITERATOR GEHT NICHT!!!
			ZipInputStream psVersion = iter.next();
			System.out.println(psVersion);

iterator() lässt er hier leider auch nicht zu sondern will nen Cast auf ZipFile von mir :bahnhof:

Danke
geneticZ
 

geneticZ

Bekanntes Mitglied
Hallo,
ich denke ich bin weiter gekommen, aber dennoch ist das Skript leider nicht fehlerfrei.
Code:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

public class ZipArchiveExtractor {

	/**
	 * @param args
	 */
	
	

	public void extractArchive(InputStream archive, File destDir) throws Exception {
		if (!destDir.exists()) {
			destDir.mkdir();
		}

		ZipInputStream quelle = new ZipInputStream(archive);
		

		byte[] buffer = new byte[16384];
		int len;
		while (true) {
			ZipEntry entries = quelle.getNextEntry();

			String entryFileName = entries.getName();

			File dir = buildDirectoryHierarchyFor(entryFileName, destDir);
			if (!dir.exists()) {
				dir.mkdirs();
			}

			if (!entries.isDirectory()) {
				BufferedOutputStream bos = new BufferedOutputStream(
						new FileOutputStream(new File(destDir, entryFileName)));

				BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entries));// DIE ZEILE HIER STIMMT SICHER NICHT!!!!

				while ((len = bis.read(buffer)) > 0) {
					bos.write(buffer, 0, len);
				}

				bos.flush();
				bos.close();
				bis.close();
			}
		}
	}

	private File buildDirectoryHierarchyFor(String entryName, File destDir) {
		int lastIndex = entryName.lastIndexOf('/');
		String entryFileName = entryName.substring(lastIndex + 1);
		String internalPathToEntry = entryName.substring(0, lastIndex + 1);
		return new File(destDir, internalPathToEntry);
	}
	
	
	
	public static void main(String[] args, String path) throws Exception {
		InputStream quelle = ZipArchiveExtractor.class.getResourceAsStream("Script.jar");
		new ZipArchiveExtractor().extractArchive(quelle, new File(
				"c:/SCRIPT"));
	}
}

wäre sehr nett wenn du mal überprüfen könntest wo ich Fehler gemacht habe!

vielen vielen Dank für deine Mühe!
mfg
geneticZ
 

geneticZ

Bekanntes Mitglied
stimmt der Rest?
Ausser die eine Zeile oder wie? :bahnhof:


Code:
BufferedInputStream bis = new BufferedInputStream(quelle);

so stimmts dann aber auch nich![/code]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
Developer_X Java File listet den Ordner, in dem sich die Datei befindet Java Basics - Anfänger-Themen 7
M Ordner im ZIP-File lesen Java Basics - Anfänger-Themen 2
G File.list() - Ordner ausblenden Java Basics - Anfänger-Themen 2
H In welchem Ordner liegt das jar file? Java Basics - Anfänger-Themen 2
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
E Javamail Gesendet ordner Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
T src Ordner ausführen Java Basics - Anfänger-Themen 9
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
L Files verschieben in einen Ordner Java Basics - Anfänger-Themen 87
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
J Eclipse Einrichten : Umzug in anderen Ordner Java Basics - Anfänger-Themen 2
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
F Zeile in Ordner Java Basics - Anfänger-Themen 4
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
das_leon Auf Ordner zugreifen (Vollzugriff) Java Basics - Anfänger-Themen 2
MR._FIRE_Flower Ordner im Explorer öffnen lassen Java Basics - Anfänger-Themen 2
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
L Ordner Zippen Java Basics - Anfänger-Themen 2
L Ordner zusammenlegen Java Basics - Anfänger-Themen 3
J Java Ordner Erstellung nicht möglich. Java Basics - Anfänger-Themen 3
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
M Erste Schritte Ordner im selber Verzeichnis wählen Java Basics - Anfänger-Themen 1
D Input/Output Ordner aus .Jar in das Verzeichnis der .Jar kopieren Java Basics - Anfänger-Themen 1
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
agent47 Input/Output Ordner/Datei Rekutrsiv erstellen und Java Basics - Anfänger-Themen 8
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
D Ordner der Ausgeführten Datei erhalten Java Basics - Anfänger-Themen 4
P newbie- Frage zu Ordner-Projektstruktur Java Basics - Anfänger-Themen 3
L Herunterladbares Java Programm in bestimmten Ordner speicher Java Basics - Anfänger-Themen 3
M Input/Output Ordner erstelen? Java Basics - Anfänger-Themen 12
A Ordner zippen Java Basics - Anfänger-Themen 10
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
J Ordner unter Windows Verstecken Java Basics - Anfänger-Themen 2
D Ordner auf Desktop erstellen(Pc unabhängig) Java Basics - Anfänger-Themen 3
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
I Ordner schnell durchlesen Java Basics - Anfänger-Themen 11
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
I Datei schreiben, im Klassen-Ordner Java Basics - Anfänger-Themen 15
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3
V bin und src Ordner Java Basics - Anfänger-Themen 3
M JFS- Ordner von faces-config.xml Java Basics - Anfänger-Themen 2
M JFileChooser Ordner auswählen Java Basics - Anfänger-Themen 5
C src-Ordner in jar-Datei (Eclipse) Java Basics - Anfänger-Themen 4
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
B Ordner leeren/löschen Java Basics - Anfänger-Themen 5
M Java-Datei in Ordner Kopieren Java Basics - Anfänger-Themen 12
X Wieso mehrere JRE ordner? Java Basics - Anfänger-Themen 8
N Kein Zugriff auf Ordner -> NullPointerException Java Basics - Anfänger-Themen 2
I Dateien in Ordner und Unterordner durchsuchen Java Basics - Anfänger-Themen 18
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
D Compiler-Fehler Klasse wird im selben Ordner nicht gefunden Java Basics - Anfänger-Themen 5
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
S Bearbeiting von xml-Datei in src-Ordner möglich?i Java Basics - Anfänger-Themen 5
B res-Ordner für Text- und Bilddateien Java Basics - Anfänger-Themen 23
B Ordner in jar dateien einfügen Java Basics - Anfänger-Themen 4
M Java Eclipse IDE erstellt keinen Bin Ordner. Java Basics - Anfänger-Themen 10
F Kopieren von Ordner sammt inhalt Java Basics - Anfänger-Themen 5
V Ressourcen aus Ordner nutzen Java Basics - Anfänger-Themen 5
W Ordner "auslesen" Java Basics - Anfänger-Themen 18
R Aus jar Ordner lesen Java Basics - Anfänger-Themen 27
F Auf Ordner im selben Verzeichniss zugreifen Java Basics - Anfänger-Themen 3
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
P Problem :Java-Dateien in einem Ordner ablegen Java Basics - Anfänger-Themen 10
S Ordner / Package Struktur bei größerem Projekt? Java Basics - Anfänger-Themen 8
O Erste Schritte Runnable Jar <- Ordner Fehlen Java Basics - Anfänger-Themen 6
D höchster ordner in zip datei Java Basics - Anfänger-Themen 14
J Ordner und Unterordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 7
M Dateipfad: einen Ordner "hoch" Java Basics - Anfänger-Themen 11
M Input/Output Namen der Files aus einem Ordner MIT bestimmten Encoding auslesen? Java Basics - Anfänger-Themen 3
L Größe von Ordner wiedergeben Java Basics - Anfänger-Themen 4
M Applet soll Bilder aus Ordner lesen Java Basics - Anfänger-Themen 9
V .cab Dateien im Win Profil Ordner? Java Basics - Anfänger-Themen 5
eLogic Ordner kopieren/schreiben Java Basics - Anfänger-Themen 2
D Ordner in Eclipse Importieren Java Basics - Anfänger-Themen 6
F Ordner in JAR scannen Java Basics - Anfänger-Themen 3
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
P Kompelieren von 2 Java Dateien im selben Ordner Java Basics - Anfänger-Themen 13
V Datei in Ordner auslesen -> neuer Ordnername Java Basics - Anfänger-Themen 7
J Dateien aus Ordner auslesen bzw. einlesen Java Basics - Anfänger-Themen 4
G jar datei funktioniert nicht ohne jdom.jar im Ordner Java Basics - Anfänger-Themen 7
H Textdateien in Ordner einlesen - unendlich ? Java Basics - Anfänger-Themen 8
B Datei in mehrere Ordner splitten und wieder zusammenfuegen... Java Basics - Anfänger-Themen 3
B Ordner öffnen (eigener Dateibrowser) Java Basics - Anfänger-Themen 8
F Liste aller Ordner auf einem Laufwerk erstellen? Java Basics - Anfänger-Themen 3
StrikeTom Wie ermittel ich alle dateinamen in einem Ordner Java Basics - Anfänger-Themen 2
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
S Betriebssystem - Ordner erstellen auf Windows & Linux Java Basics - Anfänger-Themen 3
BleedingSt4r Ordner + Unterordner "auslesen" ? Java Basics - Anfänger-Themen 32
S Ordner erstellen Problem Java Basics - Anfänger-Themen 4
S Ordner umbenennen mit renameTo - mysteriöses Problem Java Basics - Anfänger-Themen 9
T alle Ordner in einem Ordner in JList anzeigen Java Basics - Anfänger-Themen 3
M Ordner Download Java Basics - Anfänger-Themen 11
Developer_X Zugriff auf PC verweigert bei Ordner erstellung, wie zulassen?! Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben