Creative Saplings

Java – Læs en fil fra ressourcemappen

januar 9, 2021
No Comments
Af mkyong | Sidst opdateret: 4. september 2020
Set: 1.368.612 | +4.610 pv / w

I Java kan vi bruge getResourceAsStream eller getResource for at læse en fil eller flere filer fra en resources -mappe eller rod på klassestien.

Metoden getResourceAsStream returnerer en InputStream.

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

Filer i ressourcemappen

1.1 Gennemgå filerne i src/main/resources, senere får vi adgang til filerne og udskrive filindholdet.

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 skal du oprette værktøjer som Maven, Gradle eller almindelig Java-praksis kopierer alle filer fra src/main/resources til roden af target/classes eller build/classes. Så når vi prøver at læse en fil fra src/main/resources, læser vi filen fra roden til projektets klassesti.

1.3 Nedenfor er en JAR-filstruktur. Normalt kopieres filerne i resources -mappen til roden på klassestien.

Terminal

Hent en fil fra ressourcemappen.

2.1 Eksemplet nedenfor viser brugen af getResourceAsStream og getResource metoder til at læse en fil json/file1.json fra resources -mappen og udskrive filindholdet.

Bemærk

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

Output

Terminal

2.2 Nu pakker vi projektet i en JAR-fil og kører det; denne gang mislykkes getResource og returnerer enten NoSuchFileException eller InvalidPathException. Vi kan ikke læse filerne inde i JAR-filen via ressource-URL’en.

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

Terminal

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

Terminal

PS Denne eksempel bruger Maven-pluginet maven-jar-plugin til at oprette JAR-filen.

pom.xml

Hent en fil fra ressourcemappen – Enhedstest

3.1 Vi placerer testressourcerne i mappen src/test/resources til enhedstest. Normalt kopieres filerne i testressourcer til mappen target/test-classes.

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

3.2 Det fungerer på samme måde som vi læser filen fra src/main/resources. Vi bruger de samme getResourceAsStream og getResource metoder til at læse filen fra src/test/resources.

FileResourcesTest.java

Output

Terminal

Hent alle filer fra en ressourcemappe. (IKKE-JAR-miljø)

Hvis vi ikke kender det nøjagtige filnavn og vil læse alle filer, inklusive undermappefiler fra en ressourcemappe, kan vi bruge NIO Files.walk for let at få adgang til og læse filerne.

4.1 Eksemplet nedenfor bruger Files.walk til at læse alle filer fra en mappe src/main/resources/json:

FileResourcesUtils.java

Output

Terminal

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

Terminal

Hent alle filer fra en ressourcemappe. (JAR-version)

5.1 Dette eksempel viser, hvordan man Files.walk en mappe inde i en JAR-fil via FileSystems og URI jar:file:xxx.jar.

Ideen er:

  • Fil fører mappen inde i en JAR-fil ved hjælp af FileSystems, og få alt filnavnet, se getPathsFromResourceJAR()
  • Loop hele filnavnet, få adgang til og udskriv hver fil som eksempel 2.1, se getFileFromResourceAsStream().
FileResourcesUtils.java

Output

Terminal

Download 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 – Opret JAR-fil
  • Zip File System Provider
  • Java Files. Gangeksempler
  • Java – Få stien til en kørende JAR-fil

mkyong

Grundlægger af Mkyong.com, elsker Java og open source-ting. Følg ham på Twitter. Hvis du kan lide mine tutorials, så overvej at donere til disse velgørenhedsorganisationer.

Articles
Previous Post

Hvordan tager jeg et skærmbillede på en bærbar Dell-pc (med billeder)

Next Post

PMC (Dansk)

Skriv et svar Annuller svar

Seneste indlæg

  • Verdens bedste fotografiskoler, 2020
  • Suveræne borgere tager deres regeringsfilosofi til vejene
  • Guide til reparation af stuk reparationer
  • Muckrakers (Dansk)
  • Precision Oncology

Arkiver

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