Zum Inhalt springen

jars entpacken


tinella

Empfohlene Beiträge

Hallo Leute

Ich habe bis jetzt einen Suchalgorithmus der mir einen Verzeichnisbaum als Tree anzeigt.

Da ich aber einen JarBrowser implementiere, muss ich die Jars mit Inhalt in den betreffenden Verzeichnissen anzeigen!

Mein Suchalgorithmus filtert nach JarFiles und speichert diese in einen Vector:

public void recursiveJarSearch(String dirPath, Vector vecJarFile) {

		File resultFile = new File(dirPath);

		String[] arrContent = resultFile.list();


		for (int j = 0; j < arrContent.length; j++) {

			try {

				String strSeparator = String.valueOf(File.separator);

				String path = dirPath + strSeparator + arrContent[j];

				File dir = new File(path);


				[B]if (arrContent[j].endsWith(".jar"))[/B] {

					System.out.println("JarFile: " + path);

					vecJarFile.addElement(path);

					// JarFileOpener.searchClasses(); aufrufen!


				} else if (dir.isDirectory()) {

					String[] splittedStrArr = (path.split("\\\\|/"));

					// call show() and give show() the splitted element

					makeObject(splittedStrArr);

					recursiveJarSearch(path, vecJarFile);

				}

			} catch (Exception e) {

				e.printStackTrace();

				continue;

			}

		}

	}
Ich hab nirgends was geeignetes gefunden - wie kann ich jetzt von diesem String die Jars auspacken? Ich habe gedacht, dass ich eine Klasse
JarFileOpener
erstelle, und in dieser das dann entpacke und in meiner vorhandenen Klasse TreeMaker
/**

 * Makes the Tree. Demonstrates the TreeViewer and shows the drives,

 * directories, and files on the system.

 */

public class TreeMaker extends ApplicationWindow{

	//private TreeContentElement tce;

	//private TreeLabelProvider tlp;

	private SearchOverDirectories search;

	public ImageRegistry imageRegistry;


	/**

	 * Treemaker constructor.

	 */

	public TreeMaker(Shell shell) {

		super(shell);

		search = new SearchOverDirectories();

		search.recursiveJarSearch(search.rootDir, search.getVecJarFile());

	}


    public static void main(String[] args) {

    	ApplicationWindow treeMaker = new TreeMaker(null);


    	treeMaker.setBlockOnOpen(true);

    	treeMaker.open();

        Display.getCurrent().dispose();

    }


	// TODO: Weshalb baue ich den Tree mit Objekten auf?

    protected Control createContents(Composite parent) {

		Composite composite = new Composite(parent, SWT.NONE);

		composite.setLayout(new GridLayout(1, false));


		// Create the tree viewer to display the file tree

		final TreeViewer treeViewer = new TreeViewer(composite);

		treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));


        treeViewer.setContentProvider(search.rootElement);

        treeViewer.setLabelProvider(new TreeLabelProvider());


        treeViewer.setInput("root"); // pass a non-null that will be ignored

        getShell().setText("Jar Browser JB");

        parent.setSize(640, 480);


        return parent;

        // return parent;

    }

}

statt nur die Verzeichnis aufbaue auch noch die JarFiles!

MEINE FRAGE:

- wie entpacke ich die Jars anhand meinen Infos im Array?

- wie stelle ich das Ergebnis anhand meiner Klasse TreeMaker dar?

Sorry der lange Post...

Wenn jemand L&Z hat, wäre ich um eine Antwort auch mit Verweis auf ein anderes Beispiel sehr sehr dankbar! :(

Hoffe nicht auf eine sollständige Lösung aber wenn ich einen Ansatz hätte würde mir das schon enorm weiterhelfen!

Tinella

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jar-Dateien sind nichts anderes als gezippte Archive mit der Endung .jar statt .zip. Schau' mal im Datei-Kapitel von Java ist auch eine Insel nach. Dort findest Du Beispiele wie man zip-Dateien öffnet. Das sollte dann auch für jars gelten.

Auf jeden Fall aber brauchst Du den kompletten Pfad zum jar, nicht nur den Dateinamen.

Zum TreeMaker: Keine Ahnung, was das Teil macht...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...