รายการคุณสมบัติสามารถมีรายการคุณสมบัติอื่นเป็น "ค่าเริ่มต้น" ได้ หากไม่พบคีย์คุณสมบัติในรายการคุณสมบัติดั้งเดิม รายการคุณสมบัติที่สองจะถูกค้นหา
เนื่องจากคุณสมบัติสืบทอดมาจาก Hashtable จึงสามารถใช้เมธอด put และ putAll กับอ็อบเจ็กต์ Properties ได้ อย่างไรก็ตาม ไม่แนะนำให้ใช้ทั้งสองวิธีนี้ เนื่องจากอนุญาตให้ผู้เรียกแทรกรายการที่มีคีย์หรือค่าที่ไม่ใช่สตริงได้ ให้ใช้เมธอด setProperty แทน หากเรียกใช้เมธอด store หรือ save บนออบเจ็กต์คุณสมบัติ "ไม่ปลอดภัย" (นั่นคือ มีคีย์หรือค่าที่ไม่ใช่สตริง) การเรียกจะล้มเหลว ในทำนองเดียวกัน หากเรียกเมธอด propertyNames หรือ list บนอ็อบเจ็กต์คุณสมบัติ "ไม่ปลอดภัย" (นั่นคือ มีคีย์ที่ไม่ใช่สตริง) การเรียกจะล้มเหลว
ไฟล์คุณสมบัติมักจะมองเห็นได้ในแอปพลิเคชัน Java และยังเป็นไฟล์ประเภทที่สำคัญอย่างยิ่งอีกด้วย ใช้เพื่อกำหนดค่าข้อมูลบางอย่างของแอปพลิเคชัน แต่โดยทั่วไปแล้วข้อมูลนี้จะเป็นข้อมูลที่ค่อนข้างเล็ก ไม่จำเป็นต้องมีไฟล์ฐานข้อมูลในการบันทึก แต่ให้ใช้ไฟล์ข้อความทั่วไปเพื่อบันทึกข้อมูลโดยตรง อาจถูกจัดเก็บและบันทึก ไม่สะดวกนัก แต่จะแตกต่างออกไปหากบันทึกเป็นไฟล์คุณสมบัติมีค่าคีย์ที่สอดคล้องกัน ในแพ็คเกจ JAVA มีคลาสพิเศษสำหรับไฟล์คุณสมบัติปฏิบัติการ . คลาสนี้เป็นคลาส java.uitl.Properties เนื่องจากคลาส Properties เป็นคลาสคอลเลกชั่น Properties จะอ่านและเขียนคุณสมบัติในคอลเลกชั่น
หมายเหตุ: โค้ดต่อไปนี้ไม่ได้จับข้อยกเว้นที่เกิดขึ้น เมื่อเขียนโปรแกรม คุณต้องใส่ใจกับการจับข้อยกเว้น
คลาส Properties สืบทอดคลาส Hashtable และใช้วิธีจัดเก็บข้อมูลที่สอดคล้องกับค่าคีย์ จะสะดวกอะไรเมื่อใช้คลาส Properties ในการจัดการไฟล์คุณสมบัติ คลาส Properties มีวิธีการอ่านและเขียนแบบพิเศษในการอ่านและเขียนไฟล์แอตทริบิวต์ Properties วิธีการคุณสมบัติที่ใช้ในการอ่านและเขียนไฟล์คุณสมบัติคือ:
คัดลอกรหัสรหัสดังต่อไปนี้:
//วิธีการอ่านสตรีมไฟล์แอตทริบิวต์
โหลดโมฆะสาธารณะ (InputStream inStream) พ่น IOException {}
//วิธีการเขียนสตรีมไฟล์แอตทริบิวต์
ร้านค้าโมฆะสาธารณะ (OutputStream ออก, ความคิดเห็นสตริง) พ่น IOException {}
ขั้นแรก มาดูวิธีการอ่านคุณสมบัติจากไฟล์คุณสมบัติกันก่อน
สมมติว่าเราได้สร้างไฟล์คุณสมบัติใหม่ชื่อ prop.properties โดยมีเนื้อหาดังต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
ชื่อไซต์=abcjava
siteurl=www.abcjava.com
ขั้นตอนแรกที่เราต้องทำคืออ่านไฟล์ลงในออบเจ็กต์คลาส Properties เนื่องจากพารามิเตอร์หนึ่งของการโหลดคือ InputStream เราจึงสามารถใช้คลาสย่อย InputStream FileInputStream เพื่ออ่านไฟล์คุณสมบัติลงในออบเจ็กต์ Properties ได้ ใช้ตัวสร้าง FileInputStream (ชื่อสตริง):
คัดลอกรหัสรหัสดังต่อไปนี้:
คุณสมบัติ prop = คุณสมบัติใหม่ (); // วัตถุการรวบรวมคุณสมบัติ
FileInputStream fis = new FileInputStream("prop.properties");//สตรีมไฟล์คุณสมบัติ
prop.load(fis);//โหลดสตรีมไฟล์คุณสมบัติลงในอ็อบเจ็กต์คุณสมบัติ
หลังจากที่รู้วิธีอ่านไฟล์คุณสมบัติแล้ว เราก็มีอีกสิ่งหนึ่งที่สำคัญมากที่ต้องทำ ซึ่งก็คือการแก้ไขและเพิ่มคุณสมบัติใหม่ให้กับไฟล์คุณสมบัติ ในที่นี้ เราใช้เมธอด public void store (OutputStream out, String comment) การรวบรวมคุณสมบัติ สำหรับสตรีม OutputStream เช่นเดียวกับสตรีม InputStream คลาสย่อย FileOutputStream (ชื่อสตริง) ก็ถูกใช้ที่นี่เช่นกัน ดังนั้นฉันจะไม่ลงรายละเอียดที่นี่
ก่อนที่จะบันทึกคอลเลกชันคุณสมบัติลงในไฟล์ เรามีอีกสิ่งหนึ่งที่ต้องทำคือวิธีแก้ไขและเพิ่มคุณสมบัติใหม่ให้กับคอลเลกชันคุณสมบัติ วิธีหนึ่งที่ใช้ที่นี่คือ setProperty(String key, String value) วิธีนี้คือการแก้ไขค่าของคีย์เมื่อมีคีย์ที่ระบุอยู่ในคอลเลกชันแอ็ตทริบิวต์ หากไม่มีอยู่ ให้สร้างคีย์ใหม่ด้วย ที่คลาส Properties สืบทอดมาเนื่องจาก Hashtable ก็เป็นไปได้ที่จะบันทึกโดยใช้วิธี put และ putAll ของ Hashtable แต่การใช้ทั้งสองวิธีนี้ไม่แนะนำอย่างยิ่งเนื่องจากอนุญาตให้ผู้เรียกแทรกรายการที่มีคีย์หรือค่าไม่ใช่สตริง ให้ใช้เมธอด setProperty แทน ถ้ามีการเรียกเมธอด store หรือ save บนอ็อบเจ็กต์ Properties ที่ "มีความเสี่ยง" (นั่นคือ มีคีย์หรือค่าที่ไม่ใช่สตริง) การเรียกจะล้มเหลว มาดูขั้นตอนการแก้ไข เพิ่ม และบันทึกแอตทริบิวต์กัน:
คัดลอกรหัสรหัสดังต่อไปนี้:
//แก้ไขค่าแอตทริบิวต์ของชื่อไซต์
prop.setProperty("ชื่อเว็บไซต์", "รหัสกล่อง");
//เพิ่มสตูดิโอแอตทริบิวต์ใหม่
prop.setProperty("สตูดิโอ", "Boxcode สตูดิโอ");
//สตรีมเอาต์พุตไฟล์
FileOutputStream fos = new FileOutputStream("prop.properties");
//บันทึกคอลเลกชันคุณสมบัติลงในสตรีม
prop.store(fos, "ลิขสิทธิ์ (c) Boxcode Studio");
fos.close();//ปิดสตรีม
ถัดไปคือซอร์สโค้ดของโปรแกรมทั้งหมด:
คัดลอกรหัสรหัสดังต่อไปนี้:
นำเข้า java.io.FileInputStream;
นำเข้า java.io.FileOutputStream;
นำเข้า java.util.Properties;
PropertyEditor ระดับสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) พ่นข้อยกเว้น {
คุณสมบัติ prop = คุณสมบัติใหม่ (); // วัตถุการรวบรวมคุณสมบัติ
FileInputStream fis = new FileInputStream("prop.properties");//สตรีมอินพุตไฟล์คุณสมบัติ
prop.load(fis);//โหลดสตรีมไฟล์คุณสมบัติลงในอ็อบเจ็กต์คุณสมบัติ
fis.close(); // ปิดสตรีม
// รับค่าแอตทริบิวต์ ชื่อไซต์ถูกกำหนดไว้ในไฟล์แล้ว
System.out.println("รับค่าคุณสมบัติ: sitename=" + prop.getProperty("ชื่อไซต์"));
// รับค่าแอตทริบิวต์ ประเทศไม่ได้ถูกกำหนดไว้ในไฟล์ ค่าเริ่มต้นจะถูกส่งกลับในโปรแกรมนี้ แต่ไฟล์แอตทริบิวต์จะไม่ได้รับการแก้ไข
System.out.println("รับมูลค่าทรัพย์สิน: ประเทศ=" + prop.getProperty("ประเทศ", "จีน"));
// แก้ไขค่าแอตทริบิวต์ของชื่อไซต์
prop.setProperty("ชื่อเว็บไซต์", "รหัสกล่อง");
//เพิ่มสตูดิโอแอตทริบิวต์ใหม่
prop.setProperty("สตูดิโอ", "Boxcode สตูดิโอ");
//สตรีมเอาต์พุตไฟล์
FileOutputStream fos = ใหม่ FileOutputStream("prop.properties");
// บันทึกคอลเลกชันคุณสมบัติไปยังสตรีม
prop.store(fos, "ลิขสิทธิ์ (c) Boxcode Studio");
fos.close();//ปิดสตรีม
-
-