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)