Heim >Java >javaLernprogramm >Wie kann ich mit Java Dateien in einer JAR-Datei auflisten?

Wie kann ich mit Java Dateien in einer JAR-Datei auflisten?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 01:39:10240Durchsuche

How Can I List Files Inside a JAR File Using Java?

Auflisten von Dateien in einem JAR mit Java

Eine häufige Aufgabe bei der Arbeit mit JAR-Archiven ist das Auflisten der darin enthaltenen Dateien. Dies kann für verschiedene Zwecke nützlich sein, beispielsweise zum Extrahieren bestimmter Dateien oder zum Erstellen einer Bestandsaufnahme des Archivinhalts.

Verwendung der Java-API

Java bietet einen umfangreichen Satz von Klassen für den Umgang mit ZIP-Dateien. einschließlich JAR-Archiven. Mit der ZipInputStream-Klasse können Sie die Einträge in einer JAR-Datei durchlaufen und auf deren Metadaten zugreifen.

Um die Dateien in einer JAR aufzulisten, führen Sie die folgenden Schritte aus:

  1. Besorgen Sie sich das CodeSource-Objekt für die Klasse, die innerhalb der JAR ausgeführt wird. Dies kann mit den Methoden getProtectionDomain() und getCodeSource() des Class-Objekts erfolgen.
  2. Konvertieren Sie die CodeSource mit der Methode getLocation() in ein URL-Objekt.
  3. Erstellen Sie ein ZipInputStream-Objekt aus die URL.
  4. Iterieren Sie die Einträge im JAR, indem Sie die getNextEntry()-Methode des aufrufen ZipInputStream.
  5. Überprüfen Sie für jeden Eintrag, ob der Name mit dem gewünschten Muster oder Kriterium übereinstimmt.

Beispielcode

Der folgende Code zeigt ein Beispiel für die Auflistung aller Dateien innerhalb einer JAR:

CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
  URL jar = src.getLocation();
  ZipInputStream zip = new ZipInputStream(jar.openStream());
  while (true) {
    ZipEntry e = zip.getNextEntry();
    if (e == null) {
      break;
    }
    System.out.println(e.getName());
  }
} else {
  System.out.println("JAR not found");
}

Java 7-Verbesserungen

In Java 7, a Es wurde eine neue Funktion eingeführt, die die Arbeit mit ZIP-Dateien vereinfacht. Mit der FileSystem-Klasse kann eine ZIP-Datei als schreibgeschütztes Dateisystem bereitgestellt werden. Dadurch können Sie die Standard-Java-I/O-Bibliotheken zum Navigieren und Auflisten der Inhalte der JAR-Datei verwenden.

Der folgende Code zeigt ein Beispiel für die Verwendung der FileSystem-Klasse zum Auflisten der Dateien in einer JAR:

Path jarPath = Paths.get("/path/to/my.jar");
FileSystem fs = FileSystems.newFileSystem(jarPath, null);
Path root = fs.getPath("/");
Files.walk(root)
    .filter(path -> path.toString().startsWith("path/to/your/dir/"))
    .forEach(System.out::println);

Dieser Code verwendet die Files-Klasse, die eine High-Level-API für die Arbeit mit Dateien und Verzeichnissen bereitstellt, um das Stammverzeichnis der JAR-Datei zu durchsuchen und alle Dateien herauszufiltern, die nicht mit den gewünschten übereinstimmen Kriterium.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Java Dateien in einer JAR-Datei auflisten?. 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