Rumah  >  Artikel  >  Java  >  Bagaimana untuk menyelesaikan masalah bahawa springboot tidak boleh mengakses fail selepas membacanya ke dalam pakej balang

Bagaimana untuk menyelesaikan masalah bahawa springboot tidak boleh mengakses fail selepas membacanya ke dalam pakej balang

WBOY
WBOYke hadapan
2023-06-03 16:38:182495semak imbas

springboot membaca fail, tetapi tidak dapat mengaksesnya selepas membungkusnya ke dalam pakej balang

Dalam perkembangan terkini, terdapat situasi di mana springboot tidak dapat membaca fail selepas membungkusnya ke dalam pakej balang ialah selepas pembungkusan, laluan maya fail adalah tidak sah dan hanya boleh dibaca melalui strim.

Fail berada di bawah sumber

public void test() {
  List<String> names = new ArrayList<>();
  InputStreamReader read = null;
  try {
   ClassPathResource resource = new ClassPathResource("name.txt");
 
   InputStream inputStream = resource.getInputStream();
   read = new InputStreamReader(inputStream, "utf-8");
   BufferedReader bufferedReader = new BufferedReader(read);
   String txt = null;
   while ((txt = bufferedReader.readLine()) != null) {
    if (StringUtils.isNotBlank(txt)) {
     names.add(txt);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (read != null) {
    try {
     read.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }

Latar belakang pakej springboot jar tidak boleh mengakses folder statik

1 Kadangkala, fail di bawah classpath digunakan di latar belakang Secara amnya, kami menulisnya seperti ini

File file = ResourceUtils.getFile("classpath:static/image/image");

Dalam kes ini, tiada masalah. Tetapi selepas menjalankan pakej balang, fail itu tidak akan ditemui.

Fail di bawah Sumber wujud dalam fail balang. Tiada laluan sebenar pada cakera Ia sebenarnya laluan di dalam balang. Oleh itu, fail tidak boleh diperoleh dengan betul melalui kaedah ResourceUtils.getFile atau this.getClass().getResource("").

Untuk situasi ini. Kadangkala dokumen projek diletakkan di luar projek, tetapi mudah untuk memadamkan perkara ini secara tidak sengaja.

2. ClassPathResource

 ClassPathResource cpr = new ClassPathResource("static/image/image/kpg");
 InputStream in = cpr.getInputStream();

3.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bahawa springboot tidak boleh mengakses fail selepas membacanya ke dalam pakej balang. 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