เมื่อเราเขียนโปรแกรมพารามิเตอร์บางอย่างมักจะเปลี่ยนไป แต่การเปลี่ยนแปลงนี้ไม่ใช่สิ่งที่เราคาดการณ์ไว้ ตัวอย่างเช่นเราได้พัฒนาโมดูลที่ใช้งานฐานข้อมูล ในระหว่างการพัฒนาเราเชื่อมต่อกับฐานข้อมูลท้องถิ่นและ IP, ชื่อฐานข้อมูล, ชื่อตาราง, โฮสต์ฐานข้อมูลและข้อมูลอื่น ๆ เป็นแบบท้องถิ่น ในการสร้างโมดูลที่ใช้งาน Data Universal ข้อมูลข้างต้นไม่สามารถเขียนได้ในโปรแกรม โดยปกติวิธีการของเราคือการใช้ไฟล์การกำหนดค่าเพื่อแก้ปัญหา
ภาษาต่าง ๆ มีประเภทไฟล์การกำหนดค่าที่รองรับเอง ตัวอย่างเช่น Python รองรับไฟล์. ini เนื่องจากมีคลาส configparser ภายในเพื่อรองรับการอ่านและการเขียนไฟล์. ini โปรแกรมโปรแกรมเมอร์จึงสามารถใช้งานไฟล์. ini ได้อย่างอิสระตามวิธีการที่คลาสนี้ให้ไว้ ใน Java, Java สนับสนุนการอ่านและการเขียนไฟล์. properties คลาส java.util.properties ในตัวของ JDK ช่วยให้เรามีความสะดวกในการใช้งานไฟล์. properties
หนึ่ง. . แบบฟอร์มไฟล์
# ต่อไปนี้เป็นข้อมูลเซิร์ฟเวอร์และฐานข้อมูล dbport = localhost databasename = mydb dbusername = root dbpassword = root # ต่อไปนี้เป็นข้อมูลตารางฐานข้อมูล dbtable = mytable # ต่อไปนี้เป็นข้อมูลเซิร์ฟเวอร์ ip = 192.168.0.9
ในไฟล์ด้านบนเราสมมติว่าชื่อไฟล์คือ: test.properties ไฟล์ พฤติกรรมแรกของ # ความคิดเห็นข้อมูล; ทางด้านซ้ายของเครื่องหมายเท่ากัน "=" เราเรียกมันว่าคีย์; ทางด้านขวาของเครื่องหมายเท่ากัน "=" เราเรียกมันว่าค่า (อันที่จริงมันเป็นสิ่งที่เรามักเรียกว่าคู่คีย์-ค่า) คีย์ควรเป็นตัวแปรในโปรแกรมของเรา และค่าจะถูกกำหนดค่าตามสถานการณ์จริง
สอง. คลาสคุณสมบัติใน JDK
คลาสคุณสมบัติมีอยู่ในเซลล์ java.util ซึ่งสืบทอดมาจากแฮชช์และมีวิธีการหลักหลายวิธี:
1. GetProperty (คีย์สตริง) ค้นหาคุณสมบัติในรายการคุณสมบัตินี้ด้วยคีย์ที่ระบุ นั่นคือผ่านคีย์พารามิเตอร์เราได้รับค่าที่สอดคล้องกับคีย์
2. โหลด (InputStream Instream) อ่านรายการแอตทริบิวต์ (คีย์และคู่จับคู่) จากสตรีมอินพุต รับคู่คีย์-ค่าทั้งหมดในไฟล์โดยการโหลดไฟล์ที่ระบุ (เช่นไฟล์ test.properties ด้านบน) สำหรับ getProperty (คีย์สตริง) เพื่อค้นหา
3. setProperty (คีย์สตริง, ค่าสตริง), การโทรวิธีการแฮช มันตั้งค่าคู่ค่าคีย์ค่าโดยเรียกวิธีการใส่ของคลาสฐาน
4. Store (OutputStream ความคิดเห็นสตริง) เขียนรายการคุณสมบัติ (คีย์และคู่จับคู่) ในตารางคุณสมบัตินี้ไปยังสตรีมเอาต์พุตในรูปแบบที่เหมาะสมสำหรับการโหลดลงในตารางคุณสมบัติโดยใช้วิธีการโหลด ตรงกันข้ามกับวิธีการโหลดวิธีนี้จะเขียนคู่คีย์-ค่าไปยังไฟล์ที่ระบุ
5. Clear () ล้างคู่คีย์-ค่าที่โหลดทั้งหมด วิธีนี้มีให้ในคลาสฐาน
ด้วยวิธีการข้างต้นเราสามารถใช้งานได้ในไฟล์. properties!
3. ตัวอย่างไฟล์คุณสมบัติการอ่าน Java
มีกล่องไฟล์คุณสมบัติ properties พร้อมเนื้อหาต่อไปนี้:
color = redName = boxLength = 18Width = 7Heigth = 8
ในการรับค่าแอตทริบิวต์คุณสามารถใช้รหัสต่อไปนี้:
inputStream ใน = null; คุณสมบัติ p = คุณสมบัติใหม่ (); ลอง {in = new bufferedInputStream (ใหม่ FileInputStream ("box.properties")); p.load (in);} catch (filenotfoundexception e) {// toDo บล็อก catch block e.printstacktrace ();} catch (ioexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace ();} ในขณะที่ (keys.hasmoreElements ()) {string key = (String) keys.nextElement (); System.out.println (คีย์ + ":" + P.GetProperty (คีย์));}หรือ:
InputStream in; ResourceBundle RB = null; ลอง {in = new bufferedInputStream (ใหม่ FileInputStream ("box.properties")); rb = ใหม่ PropertyResourceBundle (in);} catch (filenotfoundexception e1) {// toDo บล็อก catch ที่สร้างขึ้นอัตโนมัติ e1.printstacktrace ();} catch (ioexception e) {// toDO rb.getKeys (); ในขณะที่ (keys.hasmoreElements ()) {string key = (String) keys.nextElement (); System.out.println (คีย์ + ":" + rb.getString (คีย์)); -อย่างไรก็ตามคำสั่งเอาต์พุตนั้นแตกต่างจากไฟล์ต้นฉบับ