Creative Saplings

Java – odczyt pliku z folderu zasobów

9 stycznia, 2021
No Comments
Przez mkyong | Ostatnia aktualizacja: 4 września 2020 r.
Wyświetlono: 1368612 | +4 610 pv / w

W Javie możemy użyć getResourceAsStream lub getResource, aby odczytać plik lub wiele plików z folderu resources lub katalogu głównego ścieżki klas.

Metoda getResourceAsStream zwraca InputStream.

getResource zwraca URL i normalnie konwertuje go na File; Nie działa w pliku JAR.

Pliki w folderze zasobów

1.1 Przejrzyj pliki w src/main/resources, później uzyskamy dostęp do plików i wydrukuj zawartość pliku.

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 Domyślnie narzędzia do budowania, takie jak Maven, Gradle lub popularna praktyka w Javie spowoduje skopiowanie wszystkich plików z src/main/resources do katalogu głównego target/classes lub build/classes. Tak więc, kiedy próbujemy odczytać plik z src/main/resources, czytamy plik z katalogu głównego ścieżki klas projektu.

1.3 Poniżej znajduje się struktura plików JAR. Zwykle pliki z folderu resources zostaną skopiowane do katalogu głównego ścieżki klas.

Terminal

Pobierz plik z folderu zasobów.

2.1 Poniższy przykład ilustruje użycie getResourceAsStream i getResource metody odczytu pliku json/file1.json z folderu resources i wydrukowania zawartości pliku.

Uwaga

  • Metoda getResource nie działa w pliku JAR.
  • getResourceAsStream działa wszędzie.
FileResourcesUtils.java

Wyjście

Terminal

2.2 Teraz pakujemy projekt do pliku JAR i uruchamiamy go; tym razem getResource zakończy się niepowodzeniem i zwróci NoSuchFileException lub InvalidPathException. Nie możemy odczytać plików w pliku JAR za pomocą adresu URL zasobu.

Uruchom plik JAR w systemie Linux (Ubuntu), wyrzuca NoSuchFileException.

Terminal

Uruchom plik JAR w systemie Windows, wyrzuca InvalidPathException.

Terminal

PS To przykład wykorzystuje wtyczkę Maven maven-jar-plugin do utworzenia pliku JAR.

pom.xml

Pobierz plik z folderu zasobów – Test jednostkowy

3.1 Umieściliśmy zasoby testowe w folderze src/test/resources na potrzeby testów jednostkowych. Zwykle pliki w zasobach testowych są kopiowane do folderu target/test-classes.

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

3.2 To działa w ten sam sposób czytamy plik z src/main/resources. Używamy tych samych metod getResourceAsStream i getResource, aby odczytać plik z src/test/resources.

FileResourcesTest.java

Wyjście

Terminal

Pobierz wszystkie pliki z folderu zasobów. (Środowisko NON-JAR)

Jeśli nie znamy dokładnej nazwy pliku i chcemy odczytać wszystkie pliki, w tym pliki podfolderów z folderu zasobów, możemy skorzystać z NIO Files.walk w celu łatwego dostępu do plików i ich odczytywania.

4.1 Poniższy przykład wykorzystuje Files.walk do odczytu wszystkich plików z folderu src/main/resources/json:

FileResourcesUtils.java

Wyjście

Terminal

4.2 Jednak standardowy Files.walk w przykładzie 4.1 nie może uzyskać bezpośredniego dostępu do plików w pliku JAR, spróbuj uruchomić przykład 4.1 w środowisku JAR i wyrzuca FileSystemNotFoundException.

Terminal

Pobierz wszystkie pliki z folderu zasobów. (Wersja JAR)

5.1 Ten przykład pokazuje, jak Files.walk folder w pliku JAR za pośrednictwem FileSystems i URI jar:file:xxx.jar.

Pomysł jest taki:

  • Plik przechodzi przez folder wewnątrz pliku JAR za pomocą FileSystems i pobierz całą nazwę pliku, zobacz getPathsFromResourceJAR()
  • Zapętl całą nazwę pliku, uzyskaj dostęp i wydrukuj każdy plik, jak w przykładzie 2.1, patrz getFileFromResourceAsStream().
FileResourcesUtils.java

Wyjście

Terminal

Pobierz kod źródłowy

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

$ cd java-io

  • Files.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 – Składnia i format identyfikatora URI
  • Maven – Utwórz plik JAR
  • Dostawca systemu plików Zip
  • Przykłady plików Java Files.walk
  • Java – Uzyskaj ścieżkę do uruchomionego pliku JAR

mkyong

Założyciel Mkyong.com, uwielbia Javę i open source. Śledź go na Twitterze. Jeśli podobają Ci się moje samouczki, rozważ przekazanie darowizny na te organizacje charytatywne.

Articles
Previous Post

Jak zrobić zrzut ekranu na laptopie Dell (ze zdjęciami)

Next Post

PMC (Polski)

Dodaj komentarz Anuluj pisanie odpowiedzi

Najnowsze wpisy

  • Najlepsze szkoły fotograficzne na świecie, 2020
  • Suwerenni obywatele zabierają na drogi swoją antyrządową filozofię
  • Przewodnik po kosztach naprawy sztukaterii
  • Muckrakers (Polski)
  • Precyzyjna onkologia

Archiwa

  • Luty 2021
  • Styczeń 2021
  • Grudzień 2020
  • Listopad 2020
  • Październik 2020
  • Wrzesień 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.