2011-01-12 15 views
11

Java tutorial गुणों का उपयोग करने पर। ट्यूटोरियल में यह गुणों को "डिफ़ॉल्ट प्रॉपर्टीज" नामक फ़ाइल में लिखा जा रहा है। तो गुण फ़ाइल के लिए एक अच्छा नाम और स्थान क्या है?जावा के लिए .properties फ़ाइलों को स्टोर करने के लिए कहां? प्रॉपर्टी क्लास का उपयोग करने के तरीके के बारे में संपत्तियों का उपयोग करने पर

मैं आमतौर पर दो जावा अनुप्रयोगों में से एक लिखता हूं: एक सिस्टम उपयोगिता या उपयोगकर्ता प्रोग्राम। मुझे लगता है कि अधिकांश सिस्टम उपयोगिताओं में /etc/myfile.properties में एक फ़ाइल होगी और अधिकांश उपयोगकर्ता प्रोग्राम ~/.myfile.properties बनाएंगे। हालांकि, ये पथ विंडोज़ में काम नहीं करेंगे। क्या कोड प्लेटफॉर्म को स्वतंत्र बनाने के लिए इन विवरणों को परिभाषित करने का एक और सामान्य तरीका है?

  • classpath
  • से संपत्ति फ़ाइल पढ़ें आवेदन

यह पढ़ना करने के लिए एक स्टार्टअप तर्क के रूप में संपत्ति फ़ाइल का पथ दर्रा:

+0

इस समाधान पर एक नज़र डालें: http://stackoverflow.com/questions/966029 – Hiro2k

+0

आपके अंतिम प्रश्न का संक्षिप्त उत्तर "नहीं" है। विंडोज़ में वास्तव में कॉन्फ़िगरेशन फ़ाइलों को समान रूप से रखने के लिए अच्छी जगह नहीं है जैसे यूनिक्स करता है, क्योंकि यह कम फ़ाइल-उन्मुख है। यही कारण है कि वरीयता एपीआई का आविष्कार किया गया था। जो शर्म की बात है, मैं मानता हूं, लेकिन वहां आप जाते हैं। –

उत्तर

0

यहाँ वैकल्पिक समाधान की एक जोड़ी हैं क्लासपाथ से आपको लचीलापन मिलता है, क्योंकि आप इसे जार में ही शामिल कर सकते हैं या एप्लिकेशन शुरू होने पर इसे निर्दिष्ट कर सकते हैं।

6

आप अपने अनुप्रयोग तो कॉन्फ़िगर करने के लिए बाहरी संपत्ति फ़ाइल रखने के बारे में बात कर रहे हैं, तो मेरा सुझाव है

System.getProperty("user.home")+File.separator+ "yourappname"+File.separator+"name.properties" 
आप संपत्ति फाइल के बारे में बात कर रहे हैं, तो की

अपनी परियोजना के लिए आंतरिक रखा यह default package में रहते हैं।

या

अन्य विकल्प एक्सएमएल फ़ाइल का उपयोग कर रहे हैं, या Preference

+0

ऐसा लगता है। क्या प्लेटफॉर्म-स्वतंत्र ''etc' के बराबर है? मुझे यह भी यकीन नहीं है कि विंडोज़ में क्या मैप होगा क्योंकि रजिस्ट्री आमतौर पर उस जानकारी के लिए उपयोग की जाती है। – User1

+0

'System.getProperty (" उपयोगकर्ता।घर ") 'प्लेटफॉर्म स्वतंत्र है, लिनक्स के लिए यह/home/userName/होगा, विंडोज़ के लिए यह' c: \\ दस्तावेज़ और सेटिंग्स \\ userName \\' –

+0

life.java: अप्रत्याशित रूप से, विंडोज पर, यह नहीं है सी: \ दस्तावेज़ और सेटिंग्स \ उपयोगकर्ता नाम, यह सी: \ WINNT \ प्रोफाइल \ उपयोगकर्ता नाम जैसा कुछ है। Http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4162112 और दोस्तों को देखें। हालांकि, उपयोगकर्ता 1 के उद्देश्यों के लिए, यह शायद बेहतर है। –

0

अपने रंगमंच की सामग्री bundling रहे हैं, तो अनुप्रयोग के भाग के रूप फाइल और के लिए केवल पढ़ने के लिए तो यह जार फ़ाइल में डाल दिया है। यदि आपको इसे भी अपडेट करना है तो इसे फ़ाइल के माध्यम से उपलब्ध कराएं: /// url और फ़ाइल पथ को JVM (-DfileUrl = ...) तर्क के रूप में पास करें। कैसे रंगमंच की सामग्री को पढ़ने के लिए पर इस पोस्ट पर

देखो classpath में एक जार से दायर: Reading properties file from JAR directory

7

इस मामले में मैं Properties के बजाय Preferences एपीआई का प्रयोग करेंगे।

Preferences आपको उपयोगकर्ता और सिस्टम सेटिंग्स को स्टोर/पुनर्प्राप्त करने और स्वचालित रूप से आपके लिए दृढ़ता को संभालने की अनुमति देता है। दृढ़ता मंच विशिष्ट है; विंडोज के लिए यह रजिस्ट्री का उपयोग करता है और यूनिक्स के लिए यह छिपी हुई फाइलों का उपयोग करता है।

+1

मुझे यह विचार पसंद है और मुझे लगता है कि यह ज्यादातर परियोजनाओं के लिए काम करेगा। हालांकि, कभी-कभी मैं एक कॉन्फ़िगरेशन फ़ाइल को उजागर करना चाहता हूं कि उपयोगकर्ता एप्लिकेशन के बाहर ट्विक कर सकता है। क्या 'प्राथमिकताएं' एपीआई इस तरह से काम करने का कोई तरीका है? – User1

+0

यदि आप एक कॉन्फ़िगरेशन फ़ाइल चाहते हैं जिसे उपयोगकर्ता ट्विक कर सकता है, तो 'Properties' का उपयोग करें। – Qwerky

0

जेएनडीआई का उपयोग करना एक अच्छा समाधान है। Webserver के व्यवस्थापक कंसोल के माध्यम से रनटाइम विन्यास। जैसे ही आपको संपत्ति मिलती है, वेबपैप पिकअप परिवर्तन करेगा, आपको एप्लिकेशन को पुनरारंभ करने की आवश्यकता नहीं है।

संबंधित मुद्दे

 संबंधित मुद्दे