Heim > Java > javaLernprogramm > Hauptteil

Wie Springboot Dateien unter Ressourcen liest

PHPz
Freigeben: 2023-05-12 11:46:15
nach vorne
2730 Leute haben es durchsucht

Oft müssen wir im Projekt benutzerdefinierte Konfigurationsdateien lesen, egal wie wir die lokalen Entwicklungstools schreiben, aber wenn wir sie für den Dienst bereitstellen, wird es Probleme geben

Ausnahme BOOT-INF/classes!/config.xml (Dateiname, Verzeichnis Die Syntax des Namens oder der Datenträgerbezeichnung ist falsch.) Der Pfad enthält Ausrufezeichen

Nachdem ich es verstanden habe, stellt sich heraus, dass es sich bei dem von Springboot erstellten JAR um ein handelt Datei, also ein komprimiertes Paket. Es gibt keine Möglichkeit, den Pfad in der komprimierten Datei zu lesen. Um dieses Problem zu lösen und das Prinzip des Lesens der Konfigurationsdatei zu verstehen, rufen Sie einfach den Dateistream direkt ab.

Wie Springboot Dateien unter Ressourcen liest

1. Das Lesen über den Pfad innerhalb des Projekts kann nur in Entwicklungstools verwendet werden und kann nach der Bereitstellung nicht gelesen werden. (Nicht universell)

Ähnlich wie: src/main/resources/default.xml

File file = new File("src/main/resources/default.xml");

    @Test
    public void testReadFile2() throws IOException {
        File file = new File("src/main/resources/default.xml");
        FileInputStream fis = new FileInputStream(file);
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);
        String data = null;
        while((data = br.readLine()) != null) {
            System.out.println(data);
        }
        
        br.close();
        isr.close();
        fis.close();
    }
Nach dem Login kopieren

2. Verwenden Sie org .springframework.util.ResourceUtils, lesen. In der Linux-Umgebung kann nicht gelesen werden. (Nicht universell)

File file = ResourceUtils.getFile("classpath:default.xml");
FileInputStream fis = new FileInputStream(file);

    @Test
    public void testReadFile3() throws IOException {
        File file = ResourceUtils.getFile("classpath:default.xml");
        FileInputStream fis = new FileInputStream(file);
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);
        String data = null;
        while((data = br.readLine()) != null) {
            System.out.println(data);
        }
        
        br.close();
        isr.close();
        fis.close();
    }
Nach dem Login kopieren

3. Verwenden Sie org.springframework.core.io. ClassPathResource kann in verschiedenen Umgebungen gelesen werden. (Allgemein)

Resource resources = new ClassPathResource("resource.properties");
InputStream is = resources.getInputStream();

    @Test
    public void testReadFile() throws IOException {
//        ClassPathResource classPathResource = new ClassPathResource("default.xml");
        Resource resource = new ClassPathResource("default.xml");
        InputStream is = resource.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String data = null;
        while((data = br.readLine()) != null) {
            System.out.println(data);
        }
        
        br.close();
        isr.close();
        is.close();
    }
Nach dem Login kopieren

4. Kombinieren Sie es mit Spring-Annotationen und verwenden Sie org.springframework.core.io . ResourceLoader; Klassenanmerkung. (allgemein)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.test.context.junit4.SpringRunner;
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
 
    @Autowired
    ResourceLoader resourceLoader;
    
    
    @Test
    public void testReaderFile() throws IOException {
        Resource resource = resourceLoader.getResource("classpath:default.xml");
        InputStream is = resource.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String data = null;
        while((data = br.readLine()) != null) {
            System.out.println(data);
        }
        
        br.close();
        isr.close();
        is.close();
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie Springboot Dateien unter Ressourcen liest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage