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