"आज हम एक और नए और दिलचस्प विषय की खोज कर रहे हैं: गुण। "

"जावा में, यह प्रोग्राम को लचीला और आसानी से अनुकूलन योग्य बनाने के लिए प्रथागत है, अर्थात आसानी से कॉन्फ़िगर करने योग्य।"

"उदाहरण के लिए, प्रति घंटे एक बार आपका प्रोग्राम एक निश्चित निर्देशिका से फ़ाइलों की प्रतिलिपि बनाता है, उन्हें ज़िप करता है, और उन्हें आपको ईमेल में भेजता है। ऐसा करने के लिए, प्रोग्राम को उस निर्देशिका को जानना होगा जहां से फाइलें ली जाएंगी, और ईमेल पता जहां उन्हें भेजा जाना चाहिए। इस तरह के डेटा को आमतौर पर एप्लिकेशन कोड में नहीं, बल्कि एक अलग गुण फ़ाइलों में संग्रहीत किया जाता है।"

इस फ़ाइल में डेटा कुंजी-मूल्य जोड़े के रूप में संग्रहीत किया जाता है, जो एक समान चिह्न द्वारा अलग किया जाता है।

उदाहरण
data.properties file
directory = c:/text/downloads
email = zapp@codegym.cc

"संकेत के बाईं ओर नाम (कुंजी) है, दाईं ओर मूल्य है।"

"तो यह हैश मैप का एक प्रकार का शाब्दिक प्रतिनिधित्व है?"

"सामान्य तौर पर, हाँ।"

"ऐसी फाइलों के साथ काम करने में सुविधा के लिए, जावा में एक विशेष गुण वर्ग है। गुण वर्ग हैशटेबल<ऑब्जेक्ट,ऑब्जेक्ट> को इनहेरिट करता है। इसे एक हैशटेबल के रूप में भी सोचा जा सकता है जो फ़ाइल से खुद को लोड कर सकता है।"

"यहाँ इसके तरीके हैं:"

तरीका विवरण
void load(Reader reader) रीडर ऑब्जेक्ट द्वारा दर्शाई गई फ़ाइल से गुणों को लोड करता है
void load(InputStream inStream) InputStream ऑब्जेक्ट द्वारा दर्शाई गई फ़ाइल से गुणों को लोड करता है
void loadFromXML(InputStream in) किसी XML फ़ाइल से गुण लोड करें
Object get(Object key) निर्दिष्ट कुंजी के लिए मान लौटाता है। यह विधि हैशटेबल से विरासत में मिली है
String getProperty(String key) कुंजी द्वारा गुण मान (स्ट्रिंग) लौटाता है।
String getProperty(String key, String defaultValue) यदि ऐसी कोई कुंजी नहीं है, तो कुंजी या डिफ़ॉल्ट मान द्वारा संपत्ति मान लौटाता है।
Set<String> stringPropertyNames() सभी कुंजियों की सूची लौटाता है

"दूसरे शब्दों में, आपको वास्तव में केवल दो ऑपरेशन करने की आवश्यकता है- किसी फ़ाइल से गुण ऑब्जेक्ट में डेटा लोड करें और फिर getProperty () विधि का उपयोग करके इन गुणों को प्राप्त करें। ठीक है, और यह मत भूलो कि आप गुण ऑब्जेक्ट का उपयोग कर सकते हैं जैसे एक हैश मैप ।"

"यहाँ एक और उदाहरण है:"

कोड
// The file that stores our project's properties
File file = new File("c:/data.properties");

// Create a Properties object and load data from the file into it.
Properties properties = new Properties();
properties.load(new FileReader(file));

// Get property values from the Properties object
String email = properties.getProperty("email");
String directory = properties.getProperty("directory");

// Get a numeric value from the Properties object
int maxFileSize = Integer.parseInt(properties.getProperty("max.size", "10000"));

"आह। तो हम एक गुण वस्तु बनाते हैं, और फिर उसमें एक फ़ाइल पास करते हैं। लोड विधि के लिए। और फिर हम सिर्फ गेटप्रॉपर्टी कहते हैं। सही?"

"हां।"

"और आपने यह भी कहा कि इसे हैश मैप के रूप में इस्तेमाल किया जा सकता है? आपका क्या मतलब था?"

"प्रॉपर्टीज़ क्लास हैशटेबल को इनहेरिट करती है, जो हैश मैप के समान है, लेकिन इसके सभी तरीके सिंक्रोनाइज़ हैं। आप स्क्रीन पर प्रॉपर्टी फ़ाइल से सभी मानों को इस तरह प्रदर्शित कर सकते हैं:"

कोड
// Get the file with the properties
File file = new File("c:/data.properties");

// Create a Properties object and load data from the file into it.
Properties properties = new Properties();
properties.load(new FileReader(file));

// Run through all the keys and display their values on the console
for (String key : properties.stringPropertyNames())
{
 System.out.println(properties.get(key));
}

"आह। ऐसा लगता है कि सब कुछ ठीक हो गया है। धन्यवाद, ऋषि। मैं इस बढ़िया चीज़ का उपयोग करने जा रहा हूँ।"