Creative Saplings

Java – Lesen einer Datei aus dem Ressourcenordner

Januar 9, 2021
No Comments
Von mkyong | Letzte Aktualisierung: 4. September 2020
Gesehen: 1.368.612 | +4.610 pv / w

In Java können wir oder getResource zum Lesen einer Datei oder mehrerer Dateien aus einem resources Ordner oder Stammverzeichnis des Klassenpfads.

Die Methode getResourceAsStream gibt eine InputStream zurück.

Die getResource gibt eine URL zurück und konvertiert sie normalerweise in eine File. Funktioniert nicht in JAR-Datei.

Dateien im Ressourcenordner

1.1 Überprüfen Sie die Dateien im src/main/resources. Später werden wir auf die Dateien und zugreifen Drucken Sie den Dateiinhalt aus.

src / main / resources / database.properties
src / main / resources / json / file1.json
src / main / resources / json / file2.json
src / main / resources / json / sub / subfile1.json

1.2 Erstellen Sie standardmäßig Tools wie Maven, Gradle oder die gängige Java-Praxis kopiert alle Dateien von src/main/resources in das Stammverzeichnis von target/classes oder build/classes. Wenn wir also versuchen, eine Datei aus src/main/resources zu lesen, lesen wir die Datei aus dem Stammverzeichnis des Projektklassenpfads.

1.3 Nachfolgend finden Sie eine JAR-Dateistruktur. Normalerweise werden die Dateien im Ordner resources in das Stammverzeichnis des Klassenpfads kopiert.

Terminal

Ruft eine Datei aus dem Ressourcenordner ab.

2.1 Das folgende Beispiel zeigt die Verwendung von getResourceAsStream und Methoden zum Lesen einer Datei json/file1.json aus dem Ordner resources und zum Ausdrucken des Dateiinhalts.

Hinweis

  • Die Methode getResource funktioniert in der JAR-Datei nicht.
  • Die Methode getResourceAsStream funktioniert überall.
FileResourcesUtils.java

Ausgabe

Terminal

2.2 Nun packen wir das Projekt in eine JAR-Datei und führen es aus. Dieses Mal schlägt die getResource fehl und gibt entweder NoSuchFileException oder InvalidPathException zurück. Wir können die Dateien in der JAR-Datei nicht über die Ressourcen-URL lesen.

Führen Sie die JAR-Datei unter Linux (Ubuntu) aus. Sie löst NoSuchFileException aus.

Terminal

Führen Sie die JAR-Datei unter Windows aus und es wird InvalidPathException ausgelöst.

Terminal

PS Dies Beispiel verwendet das Maven-Plugin maven-jar-plugin, um die JAR-Datei zu erstellen.

pom.xml

Ruft eine Datei aus dem Ressourcenordner ab – Unit Test

3.1 Wir legen die Testressourcen für Unit-Tests im Ordner src/test/resources ab. Normalerweise werden die Dateien in den Testressourcen in den Ordner target/test-classes kopiert.

src / test / resources / json / file1.json
src / test / resources / database.properties

3.2 Es funktioniert Auf die gleiche Weise lesen wir die Datei aus src/main/resources. Wir verwenden die gleichen Methoden getResourceAsStream und getResource, um die Datei aus der src/test/resources zu lesen.

FileResourcesTest.java

Ausgabe

Terminal

Ruft alle Dateien aus einem Ressourcenordner ab. (NON-JAR-Umgebung)

Wenn wir den genauen Dateinamen nicht kennen und alle Dateien, einschließlich Unterordnerdateien, aus einem Ressourcenordner lesen möchten, können wir NIO , um einfach auf die Dateien zuzugreifen und sie zu lesen.

4.1 Im folgenden Beispiel wird Files.walk verwendet, um alle Dateien aus einem Ordner zu lesen src/main/resources/json:

FileResourcesUtils.java

Ausgabe

Terminal

4.2 Der Standard Files.walk in Beispiel 4.1 kann nicht direkt auf die Dateien in der JAR-Datei zugreifen. Versuchen Sie, Beispiel 4.1 in einer JAR-Umgebung auszuführen, und es wird FileSystemNotFoundException.

Terminal

Ruft alle Dateien aus einem Ressourcenordner ab. (JAR-Version)

5.1 Dieses Beispiel zeigt, wie Files.walk ein Ordner in einer JAR-Datei über FileSystems und URI erstellt wird jar:file:xxx.jar.

Die Idee ist:

  • Datei durchsucht den Ordner in einer JAR-Datei mit und erhalten Sie den gesamten Dateinamen, siehe getPathsFromResourceJAR()
  • Schleifen Sie den gesamten Dateinamen, greifen Sie auf jede Datei zu und drucken Sie sie wie in Beispiel 2.1 aus, siehe getFileFromResourceAsStream().
FileResourcesUtils.Java

Ausgabe

Terminal

Quellcode herunterladen

$ git clone https://github.com/mkyong/core-java

$ cd java-io

  • Files.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 – Syntax und Format eines URI
  • Maven – JAR-Datei erstellen
  • Zip-Dateisystemanbieter
  • Java Files.walk-Beispiele
  • Java – Rufen Sie den Pfad einer laufenden JAR-Datei ab.

mkyong

Gründer von Mkyong.com, liebe Java und Open Source. Folgen Sie ihm auf Twitter. Wenn Ihnen meine Tutorials gefallen, können Sie eine Spende an diese Wohltätigkeitsorganisationen leisten.

Articles
Previous Post

Wie mache ich einen Screenshot auf einem Dell-Laptop (mit Bildern)?

Next Post

PMC (Deutsch)

Schreibe einen Kommentar Antworten abbrechen

Neueste Beiträge

  • Beste Fotografieschulen der Welt, 2020
  • Souveräne Bürger bringen ihre regierungsfeindliche Philosophie auf die Straße
  • Leitfaden für Stuckreparaturkosten
  • Muckrakers (Deutsch)
  • Präzisionsonkologie

Archive

  • Februar 2021
  • Januar 2021
  • Dezember 2020
  • November 2020
  • Oktober 2020
  • September 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.