Artikel ini terutama mempelajari masalah membaca file di bawah jalur ClassPath di bawah proyek Web, sebagai berikut.
Pertama, kami membaginya menjadi dua kategori dan mengklasifikasikannya berdasarkan wadah web
Salah satunya adalah proyek web biasa, seperti menggunakan wadah Tomcat, yang ditandai dengan paket terkompresi yang didekompresi menjadi folder saat wadah dimulai. Ketika proyek diakses, itu sebenarnya mengakses folder, bukan paket toples atau perang.
Ini adalah metode untuk mendapatkan jalur this.getClass().getResource("/")+fileName
Metode untuk mendapatkan streaming this.getClass().getResourceAsStream(failName);
impor org.springframework.util.resourceutils; file file = resourceutils.getFile ("classpath: test.txt");atau
ClassPathResource ClassPathResource = new ClassPathResource ("test.txt"); Dapatkan File: classPathResource .getFile();
Dapatkan aliran file: classPathResource .getInputStream();
Tipe kedua adalah wadah web tertanam, yang memiliki karakteristik bahwa hanya ada satu file jar, yang tidak akan didekompresi setelah wadah dimulai, dan paket jar atau paket perang digunakan ketika proyek sebenarnya diakses.
Jenis jebakan ini adalah yang paling mungkin mengalami jebakan. Jebakan terbesar adalah dibaca dengan cara pertama, men -debug secara lokal, berjalan dengan sempurna, dan bukan di lingkungan Linux.
Pertama, gunakan metode mendapatkan path this.getClass().getResource("/")+fileName untuk mendapatkan metode aliran this.getClass().getResourceAsStream(failName);
Saat berjalan secara lokal, tebing dapat ditemukan, dan Anda mencetak jalan. Ya, ini adalah direktori kerja gerhana dan direktori proyek kami, tetapi di direktori target.
Sekarang biarkan Anda menganalisis mengapa Anda online, ini GG. Ini sangat sederhana. Untuk proyek tertanam online, kami hanya akan meletakkan file jar di atasnya. Saya mengerti bahwa jalan dalam toples tidak dapat diperoleh. Toples adalah hal yang tertutup. Tidak seperti folder, tidak mungkin c: /home/xx.jar/file.txt
Membaca file dalam guci, kita hanya dapat menggunakan aliran untuk membaca, bukan file, file harus melibatkan path. Saya baru saja menjabarkan jalan toples
Cara membaca file dalam jar:
ClassPathResource ClassPathResource = new ClassPathResource ("test.txt"); Dapatkan aliran file: classPathResource .getInputStream();
Meringkaskan
Di atas adalah seluruh konten artikel ini tentang membaca file di bawah jalur ClassPath dalam proyek web. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!