जावा वेब एप्लिकेशन में, मान लीजिए कि मैं क्लासस्पैट में इनपुट एक्सचेंज स्ट्रीम प्राप्त करना चाहता हूं (यानी स्रोत फ़ोल्डर के अंदर), कैसे करें मैं करता हूं?क्लासपाथ संसाधन (एक्सएमएल फाइल) से इनपुटस्ट्रीम प्राप्त करना
उत्तर
ClassLoader.getResourceAsStream()
।
जैसा कि नीचे दी गई टिप्पणी में बताया गया है, यदि आप बहु-ClassLoader
पर्यावरण (जैसे इकाई परीक्षण, वेबपैप्स इत्यादि) में हैं तो आपको Thread.currentThread().getContextClassLoader()
का उपयोग करने की आवश्यकता हो सकती है। http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#comment21307593_2308388 देखें।
someClassWithinYourSourceDir.getClass()। GetResourceAsStream();
या' getClass()। GetResourceAsStream (" ... ")' आदि – rogerdpack
यह इस बात पर निर्भर करता है कि वास्तव में एक्सएमएल फ़ाइल कहां है। क्या यह स्रोत फ़ोल्डर में है ("डिफ़ॉल्ट पैकेज" या "रूट" में) या कक्षा के समान फ़ोल्डर में?
पूर्व मामले में, आपको फ़ाइल खोजने के लिए "/file.xml
" (प्रमुख स्लैश नोट करें) का उपयोग करना होगा और इससे कोई फर्क नहीं पड़ता कि आप किस वर्ग का उपयोग करने के लिए उपयोग करते हैं।
यदि XML फ़ाइल कुछ वर्ग के बगल में है, तो SomeClass.class.getResourceAsStream()
केवल फ़ाइल नाम के साथ जाने का तरीका है।
ClassLoader.class.getResourceAsStream("/path/to/your/xml")
और सुनिश्चित करें कि आपकी संकलन स्क्रिप्ट आपके क्लासस्पैट में जहां XML फ़ाइल की प्रतिलिपि बना रही है।
ClassLoader.class.getResourceAsStream("/path/file.ext");
लेकिन यदि वेब परिनियोजन है टोमकैट में ऐप इस तरह से त्रुटि प्राप्त करेगा: 'java.lang.NullPointerException: null', और मुझे लगता है कि सबसे आसान तरीका 'नया क्लासपाथ रिसोर्स ("/ path/to/your/file") है। getInputStream() ' – zhuguowei
, लेकिन यह एक किया था:।
SomeClassWithinYourSourceDir.class.getClassLoader() getResourceAsStream ("yourResource");
डिफ़ॉल्ट रूप से, प्रत्येक संसाधन एक वेब अनुप्रयोग में classpath वेब-INF/कक्षाएं तैनात युद्ध में फ़ोल्डर के अंतर्गत कॉपी किया जाता है करने के लिए जोड़ा।
आप इस का प्रबंधन कर सकते हैं, जबकि के माध्यम से ग्रहण में आवेदन के विकास:
सही परियोजना के लिए क्लिक करें -> गुण -> जावा बिल्ड पथ -> स्रोत टैब -> डिफ़ॉल्ट आउटपुट फ़ोल्डर
अपने सर्वलेट में, आप '/' के साथ अपने पथ को उपसर्ग करके संसाधन तक पहुंच सकते हैं जो वेब-आईएनएफ/कक्षा पर इंगित करता है।
उदाहरण के लिए, वेब-INF/कक्षाएं तहत पीडीएफ-sample.pdf उपयोग करने के लिए है, तो आप उपयोग कर सकते हैं निम्नलिखित:
getClass().getResourceAsStream("/pdf-sample.pdf")
यह tutorial बहुत अच्छी तरह से पढ़ने के संभावित तरीकों पर बताते हैं जावा एप्लिकेशन में क्लासपाथ से संसाधन फ़ाइल, यह पढ़ने योग्य है।
मैंने प्रस्तावित समाधान की कोशिश की और फाइल नाम में फिसल जाने के लिए मेरे लिए काम नहीं किया, उदाहरण: ...()। GetResourceAsStream ("/ my.properties"); शून्य वापस
स्लैश को हटाकर काम किया गया: .... getResourceAsStream ("my।गुण ");
यहाँ डॉक एपीआई से है:
If the name begins with a '/' ('\u002f'), then the absolute name of the resource is the portion of the name following the '/'.
Otherwise, the absolute name is of the following form:
modified_package_name/name
Where the modified_package_name is the package name of this object with '/' substituted for '.' ('\u002e').
- 1. वसंत: क्लासपाथ संसाधन
- 2. क्लासपाथ पर .jar में संसाधन कैसे प्राप्त करूं?
- 3. LINQ से एक्सएमएल - फाइल
- 4. क्या ज़िपिनट्रीस्ट्रीम से ज़िप्पेन्ट्री का इनपुटस्ट्रीम प्राप्त करना संभव है?
- 5. क्लासपाथ
- 6. क्लासपाथ
- 7. क्लासलोडर से क्लासपाथ कैसे प्राप्त करें?
- 8. जावा संसाधन बंद करना
- 9. एक्सएमएल - संसाधन से पढ़ें, हेरफेर और
- 10. संसाधन संसाधन से संसाधन नाम कैसे प्राप्त करूं?
- 11. वसंत: एक कारखाने-विधि में इनपुटस्ट्रीम के रूप में संसाधन इंजेक्शन
- 12. मैं GZIPed डेटा के इनपुटस्ट्रीम से डिकंप्रेस्ड डेटा का इनपुटस्ट्रीम कैसे प्राप्त करूं?
- 13. इनपुटस्ट्रीम
- 14. स्प्रिंग एक्सएमएल संदर्भ में सशर्त संसाधन आयात कैसे प्राप्त करें?
- 15. क्या मुझे इनपुटस्ट्रीम या इनपुटस्ट्रीम रीडर को बफर करना चाहिए?
- 16. किसी संसाधन फ़ाइल/सामग्री से स्ट्रीम प्राप्त करना
- 17. एक्सएसडी फ़ाइल का उपयोग कर एक्सएमएल फाइल जेनरेट करना
- 18. इनपुटस्ट्रीम
- 19. इनपुटस्ट्रीम
- 20. इनपुटस्ट्रीम
- 21. क्लासपाथ
- 22. क्लासपाथ
- 23. OMElement ऑब्जेक्ट से एक इनपुटस्ट्रीम/io.Reader प्राप्त करें
- 24. एमएस एसक्यूएल डाटाबेस से एक्सएमएल स्कीमा प्राप्त करना
- 25. जावा में SOAPMessage से कच्चे एक्सएमएल प्राप्त करना
- 26. एक्सएमएल दस्तावेज़ का डीओएम पेड़ प्राप्त करना
- 27. डीसी का मूल्य प्राप्त करना: एसक्यूएल एक्सएमएल
- 28. किसी अन्य प्रोजेक्ट से एक्सेस रेक्स संसाधन फाइल
- 29. asmack - कस्टम एक्सएमएल संदेश प्राप्त करना ||
- 30. यूआरएल से फाइल सामग्री प्राप्त करें?
एक कोड उदाहरण के लिए व्यक्तिगत पोस्ट देखें: एक पूर्ण संसाधन नाम इस कलन विधि का उपयोग दिए गए संसाधन नाम से निर्माण किया है प्रतिनिधिमंडल से पहले, http://tshikatshikaaa.blogspot.nl/2012/07/maven-how-to-access-filesdata-in.html – JVerstry
यदि आप एक बहु क्लासलोडर वातावरण (जैसे यूनिट परीक्षण/वेबपैप्स इत्यादि) में हैं, तो आपको इस थ्रेड का उपयोग करने की आवश्यकता हो सकती है .currentThread()। getContextClassLoader()। http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#comment21307593_2308388 – khylo
कृपया अपने उत्तर में @ खिलो का सुझाव जोड़ें! – froginvasion