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.
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!