Rumah >Java >javaTutorial >Kaedah `InputStream` Yang Harus Saya Gunakan untuk Memuatkan Fail dalam Pelayan Aplikasi Berbeza?

Kaedah `InputStream` Yang Harus Saya Gunakan untuk Memuatkan Fail dalam Pelayan Aplikasi Berbeza?

Susan Sarandon
Susan Sarandonasal
2024-12-16 18:47:15945semak imbas

Which `InputStream` Method Should I Use to Load Files in Different Application Servers?

Menggunakan Pelbagai Kaedah InputStream untuk Pemuatan Fail

Untuk memuatkan fail sebagai InputStream, pengaturcara mempunyai beberapa pilihan untuk dipertimbangkan. Wacana ini membandingkan dan membezakan tiga perkara biasa kaedah:

  1. this.getClass().getClassLoader().getResourceAsStream(fileName)
  2. Thread.currentThread().getCont extClassLoader().getResourceAsStream(Nama Fail)
  3. this.getClass().getResourceAsStream(Nama Fail)

Kaedah Perbezaan Tafsiran

Perbezaan utama antara kaedah ini terletak pada cara mereka mentafsir Nama fail yang disediakan. ClassLoader.getResourceAsStream() dan Class.getResourceAsStream() menggunakan pendekatan yang berbeza:

Class.getResourceAsStream(path):

  • Menganggap laluan sebagai laluan dalam pakej kelas panggilan.
  • Contoh: String.class.getResourceAsStream("myfile.txt") mencari "java/lang/myfile.txt" dalam classpath.
  • Awal "/" menunjukkan laluan mutlak, bermula dari akar classpath .
  • Contoh: String.class.getResourceAsStream("/myfile.txt") mencari "./myfile.txt" dalam classpath.

ClassLoader.getResourceAsStream(path):

  • Anggap semua laluan sebagai laluan mutlak.
  • Contoh: String.class.getClassLoader().getResourceAsStream("myfile.txt") dan String.class.getClassLoader().getResourceAsStream("/myfile.txt") kedua-duanya mencari "./myfile.txt" dalam laluan kelas.

Kesesuaian Pertimbangan

Dalam kes khusus anda, menggunakan WebSphere 6.1, anda harus menggunakan Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName). Pilihan ini sejajar dengan amalan yang disyorkan untuk memuatkan sumber dalam persekitaran pelayan aplikasi. this.getClass().getResourceAsStream() juga boleh sesuai dalam konteks ini.

Pertimbangan Tambahan untuk Pengguna Tomcat

Untuk pengguna Tomcat yang sedang berjalan versi lebih awal daripada 8, ambil perhatian bahawa ClassLoader.getResourceAsStream() dan Class.getResourceAsStream() mungkin berkelakuan berbeza daripada yang dijangkakan. Pastikan anda menilai dengan teliti tingkah laku kod anda dalam persekitaran ini.

Atas ialah kandungan terperinci Kaedah `InputStream` Yang Harus Saya Gunakan untuk Memuatkan Fail dalam Pelayan Aplikasi Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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