2010-10-31 8 views
18

फिलहाल मैं एक नाटक में एक टीम में काम कर रहा हूं! ढांचा ऐप।
अगली उपयोगकर्ता कहानी को लागू करने के लिए मुझे कुछ अलग-अलग फ़ाइल संशोधनों की आवश्यकता है, उदा। एक फ़ाइल को परिभाषित निर्देशिका में ले जाएं।मुझे प्ले फ्रेमवर्क ऐप के लिए पूर्ण पथ कैसे मिल सकता है?

क्योंकि हम विभिन्न प्लेटफ़ॉर्म पर काम कर रहे थे, इसलिए मुझे हमेशा सच नहीं है कि ऐप का सही पथ है या नहीं। इसलिए मैं ऐप निर्देशिका के पूर्ण पथ के साथ काम करना चाहता हूं।

मुझे एक नाटक का पूरा मार्ग कैसे प्राप्त हो सकता है! एप्लिकेशन? क्या कहीं भी कोई तरीका है?

String projectRoot = Play.applicationPath; 

यह आपको निर्देशिका कि प्ले से चल रहा है दे देंगे:

+3

"फिलहाल मैं एक नाटक पर एक टीम में काम कर रहा हूं! फ्रेमवर्क ऐप।" कूल! – sirmak

उत्तर

18

प्ले एक आवेदन पथ संपत्ति है।

मुझे लगता है कि एक बेहतर अभ्यास निर्देशिका को आपके प्रोजेक्ट इंस्टॉल निर्देशिका के बाहर ले जा रहा है और इसे आपके application.conf में एक संपत्ति के रूप में पथ रख रहा है। जब आवश्यक हो तो आप इसे पुनः प्राप्त करें।

Application.conf: उदाहरण के लिए:

my.file.path=/tmp/whatever 

कोड:

String projectRoot = Play.configuration.getProperty("my.file.path"); 
+5

यह प्ले I का उपयोग कर रहा है (2.1.1) के संस्करण पर काम नहीं करता है। ऐसा लगता है कि एप्लिकेशन पथ प्राप्त करने का सही तरीका है: स्ट्रिंग पथ = Play.application()। पथ()। GetPath(); – JDischler

+0

यह मेरे लिए प्ले संस्करण 1.2.4 – Elijah

2
न तो नाटक के अपने संस्करण पर काम किया उन लोगों में से

, इसलिए मैं इस बजाय प्रयोग किया: प्ले। वर्तमान()। पथ()। getAbsolutePath()

9

play 2.0 के रूप में: play.play.applica tion()। पथ()। getAbsolutePath()

9
संस्करण 2.5.0 के बाद से

, play.Play वर्ग मान्य नहीं है। यह play.Environment इंजेक्षन और विधि का उपयोग करने के रूप में इस की सिफारिश की है:

public File rootPath(); 

play.Environment सिंगलटन भी कुछ बहुत आसान विधि है, जो जैसे रिश्तेदार पथ से फ़ाइलें प्रदान होता है

public File getFile(String relativePath); 
public URL resource(String relativePath); 
public InputStream resourceAsStream(String relativePath); 
+0

पर काम करता है क्या आप कृपया इस पर्यावरण को कहां और कैसे इंजेक्ट कर सकते हैं? – JulienD

+0

@ जुलिएन, सबसे अच्छा तरीका (जो आपकी आवेदन आवश्यकताओं और डिजाइन पर निर्भर हो सकता है) आपके मॉड्यूल में 'play.Environment' का उपयोग करना होगा। कृपया इस उदाहरण को देखें: https://www.playframework.com/documentation/2.5.x/JavaDependencyInjection#Configurable- बाइंडिंग - आप अपने सेम/सेवाओं आदि बनाते समय पर्यावरण इंस्टेंस का उपयोग कर सकते हैं। – Tom

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