Ketika kami menulis program, beberapa parameter sering diubah, tetapi perubahan ini bukan yang kami prediksi. Misalnya, kami telah mengembangkan modul yang mengoperasikan database. Selama pengembangan, kami terhubung ke database lokal dan IP, nama basis data, nama tabel, host basis data dan informasi lainnya adalah lokal. Untuk membuat modul yang mengoperasikan data universal, informasi di atas tidak dapat ditulis dalam program. Biasanya pendekatan kami adalah menggunakan file konfigurasi untuk menyelesaikannya.
Berbagai bahasa memiliki jenis file konfigurasi yang didukung sendiri. Misalnya, Python, ia mendukung file .ini. Karena memiliki kelas ConfigParser di dalam untuk mendukung pembacaan dan penulisan file .ini, pemrogram dapat dengan bebas mengoperasikan file .ini sesuai dengan metode yang disediakan oleh kelas ini. Di Java, Java mendukung pembacaan dan penulisan file .properties. Kelas Java.util.util.
satu. Formulir file .properties
# Berikut ini adalah informasi server dan database dbport = localhost databaseName = mydb dbusername = root dbpassword = root # berikut ini adalah informasi tabel database dbtable = mytable # berikut ini adalah informasi server IP = 192.168.0.9
Dalam file di atas, kami berasumsi bahwa nama file adalah: file test.properties. Perilaku pertama # mengomentari informasi; Di sisi kiri dari tanda yang sama "=" Kami menyebutnya kunci; Di sisi kanan tanda yang sama "=" Kami menyebutnya nilai. (Faktanya, itu adalah apa yang sering kita sebut kunci nilai kunci) harus menjadi variabel dalam program kami. Dan nilai dikonfigurasi sesuai dengan situasi aktual.
dua. Kelas Properti di JDK
Kelas properti ada di sel java.util, yang mewarisi dari hashtable, dan menyediakan beberapa metode utama:
1. GetProperty (Kunci String), Cari properti dalam daftar properti ini dengan tombol yang ditentukan. Yaitu, melalui kunci parameter, kami mendapatkan nilai yang sesuai dengan kunci.
2. LOAD (InputStream Instream), membaca daftar atribut (kunci dan pasangan elemen) dari aliran input. Dapatkan semua pasangan nilai kunci dalam file dengan memuat file yang ditentukan (seperti file test.properties di atas). Untuk getProperty (tombol string) untuk mencari.
3. SetProperty (tombol string, nilai string), panggilan metode hashtable. Ini menetapkan nilai pasangan nilai kunci dengan memanggil metode put dari kelas dasar.
4. Store (OutputStream Out, String Commentary), tulis daftar properti (kunci dan elemen pasangan) di tabel Properties ini ke aliran output dalam format yang cocok untuk dimuat ke tabel Properties menggunakan metode pemuatan. Berbeda dengan metode pemuatan, metode ini menulis pasangan nilai kunci ke file yang ditentukan.
5. clear (), hapus semua pasangan nilai kunci yang dimuat. Metode ini disediakan di kelas dasar.
Dengan metode di atas, kami dapat beroperasi pada file .properties!
3. Java Reading Properties File Contoh
Ada kotak file properti.properties, dengan konten berikut:
Warna = redname = boxlength = 18width = 7heigth = 8
Untuk mendapatkan nilai atribut, Anda dapat menggunakan kode berikut:
InputStream in = null; properti p = properti baru (); coba {in = new bufferedInputStream (FileInputStream baru ("box.properties")); p.load (in);} catch (fileNoTfoundException e) {// TODO AUTO-AUTO-ENTOERATED Catch Block E.PrintStackTrace ();} catch (ioException e) {// TODO Auto-Exhanerated Catch Block E.PrintStackTrace ();} enumeration <pesop> Keys = p.keys (); while (keys.hasmoreElements ()) {string key = (string) keys.nextElement (); System.out.println (key + ":" + p.getProperty (key));}atau:
InputStream in; ResourceBundle rb = null; coba {in = new bufferedInputStream (FileInputStream baru ("box.properties")); RB = NEW PROVERYRESOURCEBUNDLE (IN);} Catch (FileNoTFoundException E1) {// TODO TOPLE AUTO-ENTO-ENTERATED Blok E1.PrintStackTrace ();} Catch (IOException E) {// TODO NOMO-EMOMERATED Blok Catch E.PrintStackTrace ();} {// TODO TODO AUTO-EMOMERATED Blok E.PrintStack ();} {// TODO Auto-dihasilkan auto-{PRINTRACE E.PrintStack (); ESPERICE (RB! = RB! rb.getkeys (); while (keys.hasmoreElements ()) {string key = (string) keys.nextElement (); System.out.println (key + ":" + rb.getString (key)); }}Namun, urutan output berbeda dari file asli.