2012-10-26 4 views
8

मैं एप्लिकेशन सेटिंग्स और कैश डेटा संग्रहीत करने के लिए उपयुक्त निर्देशिका प्राप्त करने के लिए, JVM पर, एक साधारण, क्रॉस-प्लेटफ़ॉर्म तरीका ढूंढ रहा हूं। जैसे, लिनक्स पर के तहत XDG चश्मा:जावा में जाने-माने डेस्कटॉप पथ प्राप्त करने के लिए सरल, क्रॉस-प्लेटफ़ॉर्म?

  • config ~/.config/appname में
  • कैश में ~/.cache/appname

विंडोज सामान या कुछ इस तरह के (7 विन पर) C\Users\user\Application Data में चला जाता है, मैं इकट्ठा करता हूं कि मैक ~/Library/Application Settings के तहत सामान रखता है।

क्या इन पथ स्थानों को पाने के लिए कोई क्रॉस-प्लेटफ़ॉर्म कॉल है? मैं एक खोजने में सक्षम नहीं हूं, हालांकि मुझे इसके बारे में पूछने के कई सवाल मिलते हैं। क्या ऐसी कुछ लाइब्रेरी है जिसने सबसे आम डेस्कटॉप प्लेटफार्मों के लिए सही तर्क लागू किया है?

सबसे खराब मामला, मैं सिर्फ user.home देख सकता हूं और सबकुछ दिखा सकता हूं कि सब कुछ एक एक्सडीजी आधारित लिनक्स वातावरण है। लेकिन अगर उपयोगकर्ता के ओएस के लिए सही निर्देशिकाएं प्राप्त करना आसान है, तो मैं ऐसा करना चाहता हूं।

उत्तर

2

FileSystemView कक्षा केवल मुझे पता है कि इसमें कुछ सामान्य निर्देशिकाओं तक पहुंच है, और क्रॉस-प्लेटफॉर्म है। प्रलेखन here

इस श्रेणी में कुछ विधि शामिल हैं जो getHomeDirectory() और getDefaultDirectory() जैसी सहायक हो सकती हैं। स्विंग इंटरफेस के लिए इस वर्ग का उपयोग JFileChooser द्वारा किया जाता है। मुझे पता है कि यह सीधे कॉन्फ़िगरेशन और कैश निर्देशिकाओं को इंगित नहीं करता है, लेकिन यह आपके लिए सही दिशा में एक कदम हो सकता है।

अपने स्वयं के ऐप्स के लिए, मैं एप्लिकेशन के भीतर निहित सभी कॉन्फ़िगरेशन और सेटिंग्स को बनाने की कोशिश करके अगला सबसे अच्छा तरीका लेता हूं - यानी। निर्देशिका के तहत एक "कॉन्फ़िगरेशन" निर्देशिका बनाएं जहां एप्लिकेशन इंस्टॉल है। भले ही यह पूरे ओएस के लिए कॉन्फ़िगरेशन के लिए केंद्रीय स्थान नहीं है, कम से कम यह जावा एप्लिकेशन संदर्भ में रखता है।

2

हम मूल रूप से एक उपयोगिता वर्ग स्थापित करते हैं जो इस जानकारी को प्रदान करता है, ज्यादातर user.home और os.name सिस्टम प्रॉपर्टी पर आधारित है।

हम तरीकों कि हमें एक रास्ता स्थान का निर्माण करने के लिए अनुमति देते हैं, कुछ की तरह की एक श्रृंखला ... है

SystemUtilities.getApplicationSettingsPath("Name of my awesome app"); 
संबंधित मुद्दे