Java - Lire un fichier à partir du dossier de ressources
Dans ce didacticiel, nous allons vous montrer comment lire un fichier à partir d'un dossier ou d'un chemin de classeresources
, à la fois dans l'environnement d'exécution et de test unitaire. Essayez de placer un fichier dans le dossiersrc/main/resources
et lisez le fichier avec les extraits de code suivants:
1. getResource
File file = new File( getClass().getClassLoader().getResource("database.properties").getFile() );
2. getResourceAsStream
InputStream inputStream = getClass() .getClassLoader().getResourceAsStream("database.properties");
Note
Vous pouvez vous intéresser à cegetResourceAsStream
in static method
1. Répertoire des projets
Passez en revue une structure de projet Maven.
2. Lire le fichier à partir du dossier de ressources
src/main/resources/database.properties
datasource.url=jdbc:mysql://localhost/example?useSSL=false datasource.username=root datasource.password=password datasource.driver-class-name=com.mysql.jdbc.Driver
Lisez le fichierdatabase.properties
et imprimez le contenu.
Application.java
package com.example; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.net.URL; public class Application { public static void main(String[] args) throws IOException { Application main = new Application(); File file = main.getFileFromResources("database.properties"); printFile(file); } // get file from classpath, resources folder private File getFileFromResources(String fileName) { ClassLoader classLoader = getClass().getClassLoader(); URL resource = classLoader.getResource(fileName); if (resource == null) { throw new IllegalArgumentException("file is not found!"); } else { return new File(resource.getFile()); } } private static void printFile(File file) throws IOException { if (file == null) return; try (FileReader reader = new FileReader(file); BufferedReader br = new BufferedReader(reader)) { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } } }
Sortie
datasource.url=jdbc:mysql://localhost/example?useSSL=false datasource.username=root datasource.password=password datasource.driver-class-name=com.mysql.jdbc.Driver
3. Test de l'unité
src/test/resources/xml/data.xml
100 example 99 example
Lisezdata.xml
et imprimez le contenu.
ApplicationTest.java
package com.example; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; public class ApplicationTest { @DisplayName("Test loading XML") @Test void loadXMLTest() { ClassLoader classLoader = getClass().getClassLoader(); try (InputStream inputStream = classLoader.getResourceAsStream("xml/data.xml")) { String result = IOUtils.toString(inputStream, StandardCharsets.UTF_8); System.out.println(result); } catch (IOException e) { e.printStackTrace(); } } }
Sortie
100 example 99 example
pom.xml
commons-io commons-io 2.6 org.junit.jupiter junit-jupiter 5.4.2 test
Télécharger le code source
Télécharger -java-get-file-from-resources.zip (6 Ko)