Rumah  >  Artikel  >  Java  >  Bagaimana springboot membaca fail di bawah sumber

Bagaimana springboot membaca fail di bawah sumber

PHPz
PHPzke hadapan
2023-05-12 11:46:152725semak imbas

Banyak kali dalam projek, anda perlu membaca fail konfigurasi tersuai Tidak kira bagaimana anda menulis alat pembangunan tempatan, anda boleh menulisnya dengan jayanya, tetapi apabila anda menggunakannya ke perkhidmatan, akan ada masalah. .

Exception BOOT-INF/classes !/config.xml (Nama fail, nama direktori atau sintaks label volum tidak betul.) Terdapat tanda seru dalam laluan

. Selepas memahaminya, springboot typed jar adalah fail, yang merupakan fail termampat, tidak ada cara untuk membaca laluan dalam fail termampat, jadi untuk menyelesaikan masalah ini dan memahami prinsip membaca. fail konfigurasi, dapatkan strim fail terus.

Bagaimana springboot membaca fail di bawah sumber

1. Membaca menggunakan laluan dalam projek hanya boleh digunakan dalam alatan pembangunan dan tidak boleh dibaca selepas penggunaan. (Tidak universal)

Serupa dengan: src/main/resources/default.xml

Fail fail = 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();
    }

2. Gunakan org.springframework.util.ResourceUtils untuk membaca. Tidak dapat membaca dalam persekitaran linux. (Tidak universal)

Fail fail = ResourceUtils.getFile("classpath:default.xml");
FileInputStream fis = new FileInputStream(fail);

    @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();
    }

3. Menggunakan org.springframework.core.io.ClassPathResource, ia boleh dibaca dalam pelbagai persekitaran. (Umum)

Sumber sumber = new ClassPathResource("resource.properties");
InputStream ialah = resource.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();
    }

4. Gabungkan dengan anotasi musim bunga dan gunakan anotasi kelas org.springframework.core.io.ResourceLoader; (Umum)

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();
    }
}

Atas ialah kandungan terperinci Bagaimana springboot membaca fail di bawah sumber. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam