Creative Saplings

Java: leer un archivo de la carpeta de recursos

enero 9, 2021
No Comments
Por mkyong | Última actualización: 4 de septiembre de 2020
Visto: 1.368.612 | +4,610 pv / w

En Java, podemos usar getResourceAsStream o getResource para leer un archivo o varios archivos de una carpeta resources o raíz de la ruta de clases.

El método getResourceAsStream devuelve un InputStream.

El getResource devuelve un URL y normalmente lo convierte en un File; No funciona en archivo JAR.

Archivos en carpeta de recursos

1.1 Revise los archivos en el src/main/resources, luego accederemos a los archivos y imprima el contenido del archivo.

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 Por defecto, compila herramientas como Maven, Gradle , o la práctica común de Java copiará todos los archivos de src/main/resources a la raíz de target/classes o build/classes. Entonces, cuando intentamos leer un archivo de src/main/resources, leemos el archivo de la raíz de la ruta de clase del proyecto.

1.3 A continuación se muestra una estructura de archivo JAR. Por lo general, los archivos de la carpeta resources se copiarán a la raíz de la ruta de clases.

Terminal

Obtenga un archivo de la carpeta de recursos.

2.1 El siguiente ejemplo demuestra el uso de getResourceAsStream y getResource métodos para leer un archivo json/file1.json de la carpeta resources e imprimir el contenido del archivo.

Nota

  • El método getResource no funciona en el archivo JAR.
  • El getResourceAsStream El método funciona en todas partes.
FileResourcesUtils.java

Salida

Terminal

2.2 Ahora, empaquetamos el proyecto en un archivo JAR y lo ejecutamos; esta vez, getResource fallará y devolverá NoSuchFileException o InvalidPathException. No podemos leer los archivos dentro del archivo JAR a través de la URL del recurso.

Ejecute el archivo JAR en Linux (Ubuntu), arroja NoSuchFileException.

Terminal

Ejecute el archivo JAR en Windows, arroja InvalidPathException.

Terminal

PD Este ejemplo usa el complemento de Maven maven-jar-plugin para crear el archivo JAR.

pom.xml

Obtener un archivo de la carpeta de recursos – Prueba de unidad

3.1 Colocamos los recursos de prueba en la carpeta src/test/resources para las pruebas unitarias. Por lo general, los archivos de los recursos de prueba se copiarán en la carpeta target/test-classes.

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

3.2 Funciona de la misma forma que leemos el archivo de src/main/resources. Usamos los mismos métodos getResourceAsStream y getResource para leer el archivo desde src/test/resources.

FileResourcesTest.java

Salida

Terminal

Obtiene todos los archivos de una carpeta de recursos. (Entorno NON-JAR)

Si no sabemos el nombre exacto del archivo y queremos leer todos los archivos, incluidos los archivos de subcarpetas de una carpeta de recursos, podemos usar el NIO Files.walk para acceder y leer fácilmente los archivos.

4.1 El siguiente ejemplo usa Files.walk para leer todos los archivos de una carpeta src/main/resources/json:

FileResourcesUtils.java

Salida

Terminal

4.2 Sin embargo, el estándar Files.walk en el ejemplo 4.1 no puede acceder a los archivos en el archivo JAR directamente, intente ejecutar el ejemplo 4.1 en un entorno JAR y arroja FileSystemNotFoundException.

Terminal

Obtiene todos los archivos de una carpeta de recursos. (Versión JAR)

5.1 Este ejemplo muestra cómo Files.walk una carpeta dentro de un archivo JAR a través de FileSystems y URI jar:file:xxx.jar.

La idea es:

  • El archivo recorre la carpeta dentro de un archivo JAR usando FileSystems, y obtenga todo el nombre de archivo, consulte getPathsFromResourceJAR()
  • Haga un bucle de todos los nombres de archivo, acceda e imprima cada archivo como en el ejemplo 2.1, consulte getFileFromResourceAsStream().
FileResourcesUtils.java

Salida

Terminal

Descargar código fuente

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

$ cd java-io

  • Archivos.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 – Sintaxis y formato de un URI
  • Maven – Crear archivo JAR
  • Proveedor de sistema de archivos zip
  • Ejemplos de archivos Java .walk
  • Java – Obtener la ruta de un archivo JAR en ejecución

mkyong

Fundador de Mkyong.com, amo Java y las cosas de código abierto. Síguelo en Twitter. Si le gustan mis tutoriales, considere hacer una donación a estas organizaciones benéficas.

Articles
Previous Post

Cómo tomar una captura de pantalla en una computadora portátil Dell (con imágenes)

Next Post

PMC (Español)

Deja una respuesta Cancelar la respuesta

Entradas recientes

  • Las mejores escuelas de fotografía del mundo, 2020
  • Los ciudadanos soberanos llevan su filosofía antigubernamental a las carreteras
  • Guía de costos de reparación de estuco
  • Muckrakers (Español)
  • Precision Oncology (Español)

Archivos

  • febrero 2021
  • enero 2021
  • diciembre 2020
  • noviembre 2020
  • octubre 2020
  • septiembre 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.