Isi berikut 1-4 adalah pengetahuan terkait yang dikumpulkan secara online. Singkatnya, mereka adalah poin pengetahuan berikut:
1. Metode yang paling umum digunakan untuk membaca file properti inputStream in = getClass (). GetResourceAsstream ("resourcename"); Metode ini mensyaratkan bahwa file properti dan kelas saat ini berada di folder yang sama. Jika dalam paket yang berbeda, Anda harus menggunakan:
InputStream INS = this.getClass (). GetResourCeAsstream ("/cn/zhao/properties/testpropertiespath2.properties");2. Dapatkan metode jalur di java
3. Implementasi sederhana memperoleh jalur
4. Tiga cara untuk mendapatkan file properti dalam refleksi
1 Metode dan pemikiran yang paling umum tentang mendapatkan file properti dalam refleksi:
Ada banyak cara untuk membaca file properti di java. Artikel yang paling umum di internet adalah "enam cara untuk membaca file properti di java". Namun, dalam aplikasi Java, metode yang paling umum digunakan adalah mengimplementasikannya melalui metode getResourceAsstream (nama string) dari kelas java.lang.class. Namun, saya telah melihat bahwa banyak kode yang membaca file properti melakukan ini:
InputStream in = getClass (). GetResourceAsstream ("Resourcename"); Ada masalah di sini, yaitu, ini dihilangkan secara default saat memanggil getClass ()! Kita semua tahu bahwa ini tidak dapat digunakan dalam metode statis (statis) atau blok statis. Alasannya adalah bahwa metode tipe statis atau blok kode milik kelas itu sendiri dan bukan milik objek tertentu. Ini sendiri mewakili objek saat ini, dan objek tidak diinisialisasi ketika metode atau blok statis dipanggil.
Masalahnya adalah: jika saya tidak ingin kelas tertentu memiliki objek, maka saya akan mengatur konstruktor default kelas ini menjadi pribadi, dan tentu saja saya tidak akan menulis konstruktor umum lainnya. Dan kelas saya adalah kelas alat, yang semuanya merupakan metode dan variabel statis. Saya ingin mendapatkan file properti di blok statis atau metode statis, dan metode ini tidak akan berhasil.
Jadi apa yang harus saya lakukan? Bahkan, kelas ini tidak digunakan seperti ini. Itu hanya perlu mendapatkan objek kelas, yang tidak mudah -
Mengambil objek kelas induk dari semua kelas, bukankah lebih nyaman dan lebih aman menggunakan objek.class daripada menggunakan milik Anda untuk menulis kelas itu sendiri? Haha, berikut adalah contoh untuk memfasilitasi komunikasi.
impor java.util.properties; impor java.io.inputstream; impor java.io.ioException; / ** * Contoh File Properti Bacaan * File: TestProperties.java * Pengguna: leizhimin * Tanggal: 2008-2-15 18:38:40 */ Public Final Class TestProperties {Private Static String Param1; Param2 string statis pribadi; statis {properties prop = properti baru (); Inputstream in = objek. kelas .getResourceAsstream ("/test.properties"); coba {prop.load (IN); param1 = prop.getProperty ("inityears1") .trim (); param2 = prop.getProperty ("inityears2") .trim (); } catch (ioException e) {e.printstacktrace (); }} / *** Konstruktor pribadi, tidak ada objek yang diperlukan* / private testProperties () {} public static string getParam1 () {return param1; } public static string getParam2 () {return param2; } public static void main (string args []) {System.out.println (getParam1 ()); System.out.println (getParam2 ()); }}Hasil Menjalankan:
151
152
Tentu saja, masih boleh menggantikan objek.class dengan int.class. Haha, kamu bisa mencobanya.
Selain itu, jika Anda membaca file properti dalam metode atau blok statis, ada metode teraman lainnya, yaitu untuk secara langsung mendapatkan objek kelas dengan nama kelas. Misalnya, dalam contoh ini, dapat ditulis sebagai testproperties.class. Ini adalah metode teraman.
2 Cara mendapatkan jalan:
File fileB = file baru (ini .getClass (). GetResource ("") .getPath ()); Sistem. out .println ("Path FileB:" + FileB);2.2 Dapatkan nama proyek dari kelas saat ini:
Sistem. out .println ("Path user.dir:" + System. GetProperty ("user.dir"))3. Implementasi Java sederhana untuk mendapatkan jalur
/ *** Dapatkan jalur absolut dari file di bawah jalur relatif proyek** @param parentdir* Direktori induk dari file target, misalnya, di direktori proyek, ada lib, bin dan direktori conf, sehingga program @pepule name* String getPath (string parentDir, string fileName) {string path = null; String userdir = system.getProperty ("user.dir"); String userDirName = file baru (userDir) .getName (); if (userDirname.equalsignorecase ("lib") || userDirname.equalsignorecase ("bin")) {file newf = file baru (userDir); File newp = file baru (newf.getParent ()); if (filename.trim (). equals ("")) {path = newp.getPath () + file.separator + parentDir; } else {path = newp.getPath () + file.separator + parentDir + file.separator + fileName; }} else {if (filename.trim (). equals ("")) {path = userdir + file.separator + parentDir; } else {path = userdir + file.separator + parentDir + file.separator + fileName; }} return path; } 4 Gunakan refleksi untuk mendapatkan jalur:
InputStream IPS1 = Pencacahan. class .getClassLoader () .getResourceAsstream ("CN/Zhao/enumstudy/testpropertiespath1.properties"); InputStream IPS2 = Pencacahan. kelas .getResourceAsstream ("testPropertiesPath1.properties"); InputStream IPS3 = Pencacahan. kelas .getResourceAsstream ("Properties/TestPropertiesPath2.Properties");Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.