Heim >Java >javaLernprogramm >Wie kann ich auf Ressourcenpfade in einer Java-JAR-Datei zugreifen?

Wie kann ich auf Ressourcenpfade in einer Java-JAR-Datei zugreifen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-18 00:07:11336Durchsuche

How Can I Access Resource Paths Inside a Java JAR File?

Abrufen von Ressourcenpfaden in Java-JAR-Dateien

In Java kann der Zugriff auf in JAR-Dateien verpackte Ressourcen eine Herausforderung darstellen. Während das Streamen von Ressourceninhalten unkompliziert ist, kann es schwierig sein, einen zugänglichen Dateipfad zu erhalten.

Ein Ansatz versucht, ein Dateiobjekt mithilfe der getResource-Methode zu erstellen:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());

Dies schlägt jedoch häufig fehl eine FileNotFoundException, da die Ressource möglicherweise keine entsprechende Datei im Dateisystem hat.

Grundlegendes zur Ressource Konzept

JAR-Dateien bündeln Ressourcen in einem Archiv, auf die möglicherweise nicht direkt als physische Dateien zugegriffen werden kann. Der Klassenlader übernimmt das Laden von Ressourcen und kann den Zugriff über Streams ermöglichen.

Alternative: Ressourceninhalte streamen

Um auf Ressourceninhalte ohne Dateipfad zuzugreifen, verwenden Sie:

ClassLoader classLoader = getClass().getClassLoader();
PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));

Option für temporäre Dateien

Wenn ein Dateiobjekt unverzichtbar ist, sollten Sie darüber nachdenken Kopieren des Streams in eine temporäre Datei:

InputStream resourceStream = classLoader.getResourceAsStream("config/netclient.p");
File tempFile = File.createTempFile("resource", ".tmp");

try (OutputStream outputStream = new FileOutputStream(tempFile)) {
    resourceStream.transferTo(outputStream);
}

Nach dem Kopieren können Sie die temporäre Datei nach Bedarf bearbeiten.

Das obige ist der detaillierte Inhalt vonWie kann ich auf Ressourcenpfade in einer Java-JAR-Datei zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn