Creative Saplings

Java – Lees een bestand uit de bronnenmap

januari 9, 2021
No Comments
Door mkyong | Laatst bijgewerkt: 4 september 2020
Bekeken: 1.368.612 | +4,610 pv / w

In Java kunnen we getResourceAsStream of getResource om een bestand of meerdere bestanden uit een resources map of root van het klassenpad te lezen.

De getResourceAsStream methode retourneert een InputStream.

De getResource methode retourneert een URL en converteert deze normaal naar een File; Werkt niet in JAR-bestand.

Bestanden in bronnenmap

1.1 Bekijk de bestanden in de src/main/resources, later zullen we toegang krijgen tot de bestanden en print de inhoud van het bestand.

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 Bouw standaard tools zoals Maven, Gradle , of de gebruikelijke Java-praktijk zal alle bestanden van src/main/resources naar de root van target/classes of build/classes. Dus als we een bestand proberen te lezen van src/main/resources, lezen we het bestand uit de root van het project classpath.

1.3 Hieronder ziet u een JAR-bestandsstructuur. Gewoonlijk worden de bestanden in de map resources naar de root van het klassenpad gekopieerd.

Terminal

Haal een bestand op uit de bronnenmap.

2.1 Het onderstaande voorbeeld toont het gebruik van getResourceAsStream en getResource methoden om een bestand json/file1.json uit de map resources te lezen en de bestandsinhoud af te drukken.

Opmerking

  • De getResource -methode werkt niet in het JAR-bestand.
  • De getResourceAsStream methode werkt overal.
FileResourcesUtils.java

Uitvoer

Terminal

2.2 Nu pakken we het project in een JAR-bestand in en voeren het uit; deze keer zal de getResource mislukken en ofwel NoSuchFileException of InvalidPathException retourneren. We kunnen de bestanden in het JAR-bestand niet lezen via de bron-URL.

Draai het JAR-bestand op Linux (Ubuntu), het gooit NoSuchFileException.

Terminal

Draai het JAR-bestand op Windows, het gooit InvalidPathException.

Terminal

PS Dit voorbeeld gebruikt de Maven-plug-in maven-jar-plugin om het JAR-bestand te maken.

pom.xml

Haal een bestand op uit de bronnenmap – Unit Test

3.1 We plaatsen de testbronnen in de map src/test/resources voor eenheidstests. Gewoonlijk worden de bestanden in testbronnen naar de map target/test-classes gekopieerd.

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

3.2 Het werkt op dezelfde manier waarop we het bestand lezen van src/main/resources. We gebruiken dezelfde getResourceAsStream en getResource methoden om het bestand te lezen van de src/test/resources.

FileResourcesTest.java

Uitvoer

Terminal

Haal alle bestanden uit een bronnenmap. (NON-JAR-omgeving)

Als we de exacte bestandsnaam niet weten en alle bestanden willen lezen, inclusief submapbestanden uit een bronnenmap, kunnen we de NIO om de bestanden gemakkelijk te openen en te lezen.

4.1 In het onderstaande voorbeeld wordt Files.walk gebruikt om alle bestanden uit een map src/main/resources/json:

FileResourcesUtils.java

Output

Terminal

4.2 De standaard Files.walk in voorbeeld 4.1 heeft geen directe toegang tot de bestanden in het JAR-bestand, probeer het voorbeeld 4.1 in een JAR-omgeving uit te voeren en het gooit FileSystemNotFoundException.

Terminal

Haal alle bestanden uit een bronnenmap. (JAR-versie)

5.1 Dit voorbeeld laat zien hoe je Files.walk een map in een JAR-bestand kunt FileSystems en URI jar:file:xxx.jar.

Het idee is:

  • Bestand loopt door de map in een JAR-bestand met FileSystems, en verkrijg alle bestandsnamen, zie getPathsFromResourceJAR()
  • Herhaal alle bestandsnamen, open en print elk bestand zoals in voorbeeld 2.1, zie getFileFromResourceAsStream().
FileResourcesUtils.java

Uitvoer

Terminal

Broncode downloaden

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

$ cd java-io

  • Files.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 – Syntaxis en indeling van een URI
  • Maven – JAR-bestand maken
  • Zip-bestandssysteemprovider
  • Java Files.walk-voorbeelden
  • Java – Haal het pad op van een actief JAR-bestand

mkyong

Oprichter van Mkyong.com, hou van Java en open source-dingen. Volg hem op Twitter. Als je mijn tutorials leuk vindt, overweeg dan om een donatie te doen aan deze goede doelen.

Articles
Previous Post

Hoe maak je een screenshot op een Dell laptop (met afbeeldingen)

Next Post

PMC (Nederlands)

Geef een reactie Antwoord annuleren

Meest recente berichten

  • Beste fotografiescholen ter wereld, 2020
  • Soevereine burgers brengen hun antiregeringsfilosofie naar de weg
  • Kostenhandleiding voor stucwerkreparatie
  • Muckrakers
  • Precisie-oncologie

Archief

  • februari 2021
  • januari 2021
  • december 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.