Creative Saplings

Java – Citiți un fișier din folderul de resurse

ianuarie 9, 2021
No Comments
De mkyong | Ultima actualizare: 4 septembrie 2020
Vizualizat: 1.368.612 | +4,610 pv / w

În Java, putem folosi getResourceAsStream sau getResource pentru a citi un fișier sau mai multe fișiere dintr-un folder resources sau din rădăcina clasei.

Metoda getResourceAsStream returnează un InputStream.

getResource metoda returnează un URL și îl convertește în mod normal într-un File; Nu funcționează în fișierul JAR.

Fișierele din folderul resurse

1.1 Revedeți fișierele din src/main/resources, ulterior vom accesa fișierele și tipăriți conținutul fișierului.

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 În mod implicit, creați instrumente precum Maven, Gradle , sau practica obișnuită Java va copia toate fișierele de la src/main/resources la rădăcina target/classes sau build/classes. Deci, când încercăm să citim un fișier din src/main/resources, citim fișierul din rădăcina căii de curs a proiectului.

1.3 Mai jos este o structură de fișier JAR. De obicei, fișierele din folderul resources se vor copia în rădăcina clasei.

Terminal

Obțineți un fișier din folderul resurse.

2.1 Exemplul de mai jos demonstrează utilizarea getResourceAsStream și getResource metode pentru a citi un fișier json/file1.json din folderul resources și a imprima conținutul fișierului.

Notă

  • Metoda getResource nu funcționează în fișierul JAR.
  • getResourceAsStream metoda funcționează peste tot.
FileResourcesUtils.java

Output

Terminal

2.2 Acum, ambalăm proiectul într-un fișier JAR și îl rulăm; de această dată, getResource va eșua și returnează fie NoSuchFileException, fie InvalidPathException. Nu putem citi fișierele din fișierul JAR prin URL-ul resursei.

Rulați fișierul JAR pe Linux (Ubuntu), acesta aruncă NoSuchFileException.

Terminal

Rulați fișierul JAR pe Windows, acesta aruncă InvalidPathException.

Terminal

PS Aceasta exemplu folosește pluginul Maven maven-jar-plugin pentru a crea fișierul JAR.

pom.xml

Obțineți un fișier din folderul resurse – Test de unitate

3.1 Am pus resursele de testare în folderul src/test/resources pentru testele unitare. De obicei, fișierele din resursele de testare se vor copia în folderul target/test-classes.

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

3.2 Funcționează în același mod în care citim fișierul din src/main/resources. Folosim aceleași metode getResourceAsStream și getResource pentru a citi fișierul din src/test/resources.

FileResourcesTest.java

Output

Terminal

Obțineți toate fișierele dintr-un folder de resurse. (Mediu NON-JAR)

Dacă nu știm exact numele fișierului și dorim să citim toate fișierele, inclusiv fișierele sub-folder dintr-un folder resurse, putem folosi NIO Files.walk pentru a accesa și citi cu ușurință fișierele.

4.1 Exemplul de mai jos folosește Files.walk pentru a citi toate fișierele dintr-un folder src/main/resources/json:

FileResourcesUtils.java

Output

Terminal

4.2 Cu toate acestea, standardul Files.walk în exemplul 4.1 nu poate accesa direct fișierele din fișierul JAR, încercați să rulați exemplul 4.1 într-un mediu JAR și aruncă FileSystemNotFoundException.

Terminal

Obțineți toate fișierele dintr-un folder de resurse. (Versiunea JAR)

5.1 Acest exemplu arată cum să Files.walk un folder în interiorul unui fișier JAR prin FileSystems și URI jar:file:xxx.jar.

Ideea este:

  • Fișierul parcurge folderul într-un fișier JAR folosind FileSystems și obțineți tot numele fișierului, consultați getPathsFromResourceJAR()
  • Buclați tot numele fișierului, accesați și imprimați fiecare fișier ca în exemplul 2.1, consultați getFileFromResourceAsStream().
FileResourcesUtils.java

Ieșire

Terminal

Descarcă codul sursă

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

$ cd java-io

  • Files.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 – Sintaxa și formatul unui URI
  • Maven – Creați un fișier JAR
  • Furnizor de sistem de fișiere Zip
  • Exemple de fișiere Java.walk
  • Java – Obțineți calea unui fișier JAR care rulează

mkyong

Fondator al Mkyong.com, iubesc Java și lucrurile open source. Urmăriți-l pe Twitter. Dacă vă plac tutorialele mele, vă recomandăm să faceți o donație pentru aceste organizații caritabile.

Articles
Previous Post

Cum să faci o captură de ecran pe un laptop Dell (cu imagini)

Next Post

PMC (Română)

Lasă un răspuns Anulează răspunsul

Articole recente

  • Cele mai bune școli de fotografie din lume, 2020
  • Cetățenii suverani își duc filosofia anti-guvernamentală la drumuri
  • Ghid de costuri de reparații stuc
  • Muckrakers (Română)
  • Oncologie de precizie

Arhive

  • februarie 2021
  • ianuarie 2021
  • decembrie 2020
  • noiembrie 2020
  • octombrie 2020
  • septembrie 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.