Creative Saplings

Java – Les en fil fra ressursmappen

januar 9, 2021
No Comments
Av mkyong | Sist oppdatert: 4. september 2020
Sett: 1 368 612 | + 4610 pv / w

I Java kan vi bruke getResourceAsStream eller getResource for å lese en fil eller flere filer fra en resources -mappe eller roten til klassestien.

getResourceAsStream -metoden returnerer en InputStream.

getResource -metoden returnerer en URL og konverterer den normalt til en File; Fungerer ikke i JAR-fil.

Filer i ressursmappe

1.1 Se gjennom filene i src/main/resources, senere får vi tilgang til filene og skriv ut filinnholdet.

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 Som standard bygger du verktøy som Maven, Gradle , eller vanlig Java-praksis, kopierer alle filer fra src/main/resources til roten til target/classes eller build/classes. Så når vi prøver å lese en fil fra src/main/resources, leser vi filen fra roten til prosjektets klassebane.

1.3 Nedenfor er en JAR-filstruktur. Vanligvis kopieres filene i resources -mappen til roten til klassestien.

Terminal

Få en fil fra ressursmappen.

2.1 Eksemplet nedenfor viser bruken av getResourceAsStream og getResource metoder for å lese en fil json/file1.json fra resources -mappen og skrive ut filinnholdet.

Merk

  • getResource -metoden fungerer ikke i JAR-filen.
  • getResourceAsStream -metoden fungerer overalt.
FileResourcesUtils.java

Output

Terminal

2.2 Nå pakker vi prosjektet i en JAR-fil og kjører det; denne gangen mislykkes getResource og returnerer enten NoSuchFileException eller InvalidPathException. Vi kan ikke lese filene i JAR-filen via ressurs-URL.

Kjør JAR-filen på Linux (Ubuntu), den kaster NoSuchFileException.

Terminal

Kjør JAR-filen på Windows, den kaster InvalidPathException.

Terminal

PS Dette eksempel bruker Maven-pluginet maven-jar-plugin for å opprette JAR-filen.

pom.xml

Få en fil fra ressursmappen – Enhetstest

3.1 Vi legger testressursene til mappen src/test/resources for enhetstester. Vanligvis vil filene i testressursene kopiere til target/test-classes -mappen.

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

3.2 Det fungerer på samme måte som vi leser filen fra src/main/resources. Vi bruker de samme getResourceAsStream og getResource metodene for å lese filen fra src/test/resources.

FileResourcesTest.java

Output

Terminal

Få alle filer fra en ressursmappe. (IKKE-JAR-miljø)

Hvis vi ikke vet det eksakte filnavnet og ønsker å lese alle filene, inkludert undermappefiler fra en ressursmappe, kan vi bruke NIO Files.walk for å få lett tilgang til og lese filene.

4.1 Eksemplet nedenfor bruker Files.walk for å lese alle filene fra en mappe src/main/resources/json:

FileResourcesUtils.java

Output

Terminal

4.2 Standard Files.walk i eksempel 4.1 kan ikke få tilgang til filene i JAR-filen direkte, prøv å kjøre eksemplet 4.1 i et JAR-miljø, og det kaster FileSystemNotFoundException.

Terminal

Få alle filer fra en ressursmappe. (JAR-versjon)

5.1 Dette eksemplet viser hvordan du Files.walk en mappe i en JAR-fil via FileSystems og URI jar:file:xxx.jar.

Tanken er:

  • Fil går mappen i en JAR-fil ved hjelp av FileSystems, og få alt filnavnet, se getPathsFromResourceJAR()
  • Løft hele filnavnet, få tilgang til og skriv ut hver fil som eksempel 2.1, se getFileFromResourceAsStream().
FileResourcesUtils.java

Utgang

Terminal

Last ned kildekode

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

$ cd java-io

  • Files.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 – Syntaks og format for en URI
  • Maven – Opprett JAR-fil
  • Zip File System Provider
  • Java Files. Gange eksempler
  • Java – Få banen til en kjørende JAR-fil

mkyong

Grunnlegger av Mkyong.com, elsker Java og open source-ting. Følg ham på Twitter. Hvis du liker veiledningene mine, kan du vurdere å gi en donasjon til disse veldedighetsorganisasjonene.

Articles
Previous Post

Hvordan ta et skjermbilde på en bærbar Dell-enhet (med bilder)

Next Post

PMC (Norsk)

Legg igjen en kommentar Avbryt svar

Siste innlegg

  • De beste fotografiskolene i verden, 2020
  • Suverene borgere tar sin regjeringsfilosofi til veiene
  • Veiledning for stukkaturreparasjon
  • Muckrakers (Norsk)
  • Precision Oncology (Norsk)

Arkiv

  • februar 2021
  • januar 2021
  • desember 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.