Rumah > Java > javaTutorial > teks badan

Bagaimana springboot membaca fail di bawah sumber

PHPz
Lepaskan: 2023-05-12 11:46:15
ke hadapan
2726 orang telah melayarinya

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();
    }
Salin selepas log masuk

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();
    }
Salin selepas log masuk

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();
    }
Salin selepas log masuk

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();
    }
}
Salin selepas log masuk

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

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan