2016-02-15 4 views
5

द्वारा लोड का निरपेक्ष पथ पता करने के लिए मैं नीचे दिए गए कोड का उपयोग कर एक गुण लोड हो रहा हूँ:कैसे एक गुण resourceBoundle

ResourceBoundle boundle = ResourceBundle.getBundle("file") 

मैं भरी हुई फ़ाइल का निरपेक्ष पथ जानना चाहते हैं। उदाहरण के लिए अगर मैं एक बिल्ला मैं प्राप्त करने के लिए चाहते हैं के webapps फ़ोल्डर में एक वेब अनुप्रयोग में इस कोड को निष्पादित करें:

c:\tomcat8\webapps\example\WEB-INF\classes\file.properties. 

मैं इस पथ पता कर सकते हैं?

+0

आपके उपरोक्त कोड में, फ़ाइल क्या है? क्या यह फ़ाइल वर्ग – Musaddique

+0

का उद्देश्य है मैंने इसे "फ़ाइल" के लिए बदल दिया है। फ़ाइल गुणों का फ़ाइल नाम – fealfu

+0

जाने का गलत तरीका है। वेबपैप में संसाधन वर्चुअल हैं और यदि आपकी युद्ध फ़ाइल का विस्तार नहीं किया गया है तो भौतिक फ़ाइलों में मैप नहीं किया जा सकता है। –

उत्तर

0

मैंने इस पोस्ट 'Getting current working directory' के साथ मेरी समस्या का समाधान किया है। मेरी समस्या के लिए मैं केवल इस की जरूरत है, एक बार मैं काम कर निर्देशिका जानता हूँ कि मैं निरपेक्ष पथ

public class Test { 
public static void main(String... args) throws Exception { 
    URL location = Test.class.getProtectionDomain().getCodeSource().getLocation(); 
    System.out.println(location.getFile()); 
}} 

मुझे लगता है कि शायद यह समाधान सभी स्थितियों को कवर नहीं करता पा सकते हैं, लेकिन यह मेरे लिए काफी है।

0

आप एक ResourceBundle से भौतिक स्थान नहीं मिल सकता है, लेकिन अगर आप रास्ता है कि लोड करने के लिए इस्तेमाल किया गया था पता है, तो आप कि की भौतिक स्थिति पता कर सकते हैं। इस तरह: - समय का कम से कम सबसे

String resourceToLoad = "file"; 
URL url = this.getClassLoader().getResource(resourceToLoad); 
ResourceBoundle bundle = ResourceBundle.getBundle(resourceToLoad); 

url संसाधन की भौतिक स्थिति होगा।

याद रखें कि ResourceBundle को किसी भी फ़ाइल फ़ाइल की बजाय जावा क्लास द्वारा समर्थित किया जा सकता है। ClassLoader.getResourceResourceBundle और जावा कक्षाओं के बीच मैपिंग को समझ में नहीं आता है। यदि आप उन लोगों का समर्थन करने में सक्षम होना चाहते हैं, तो आपको अपनी योजना से मेल खाने वाली कक्षाओं की खोज करने के लिए ResourceBundle पर एक समान एल्गोरिदम लागू करना होगा।

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