Java - Lire un fichier depuis le dossier de ressources

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.

project directory

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)