2013-02-24 53 views
8

मान लें कि मेरे क्लोजर प्रोजेक्ट के अंदर दो फाइलें हैं, एक क्लोज और दूसरा txt है। क्या क्लोज फ़ाइल से txt फ़ाइल के पथ (स्ट्रिंग के रूप में) जानने का कोई तरीका है?क्लोजर एक प्रोजेक्ट में किसी फ़ोल्डर/फ़ाइल/निर्देशिका के पथ को कैसे जानना है?

है:

(System/getProperty "user.dir") 

या

(-> (java.io.File. ".") .getAbsolutePath) 

लेकिन इस जहां वर्तमान निर्देशिका देता है। वह जिसमें क्लोज फ़ाइल शामिल है, जिसे कोड लिखा गया है। लेकिन txt फ़ाइल के पथ को कैसे जानें? उद्देश्य इस txt फ़ाइल को clj फ़ाइल से लिखना है।

धन्यवाद।

उत्तर

7

जावा में और इसलिए क्लोजर आप क्लासस्पैट पर फाइलें पा सकते हैं। उदाहरण के लिए, जावा में आपके क्लासस्पैट (उदाहरण के लिए, कक्षा निर्देशिका में) के शीर्ष पर log4j.properties जैसी चीज़ें डालना आम है और फिर आप अपने क्लोजर (या जावा) कोड में फ़ाइल को संदर्भित कर सकते हैं:

(java.io.File. "log4j.properties") 

क्या आप लीइंगेन के साथ अपना ऐप उपयोग और चला रहे हैं? यदि ऐसा है, तो आप शीर्ष स्तर पर एक निर्देशिका बना सकते हैं और वहां फाइलें डाल सकते हैं। उदाहरण के लिए, यदि आप एक कॉन्फ़िग फ़ाइल है आप एक गुण फाइलों के साथ एक "conf" dir हो सकता है:

my-lein-proj$ ls 
conf doc project.clj README.md src target test 

आप conf निर्देशिका में myproj.conf फ़ाइल डाल मान लीजिए और आप में से पढ़ना चाहते हैं अपने क्लोजर कोड। तो फिर तुम सिर्फ कर सकते हैं:

(slurp "conf/myproj.conf") 
+0

हाय, मैं लीनिंगेन का उपयोग नहीं कर रहा हूं , सिर्फ क्लोजर परियोजना। प्रोजेक्ट निर्देशिका में एक txt फ़ाइल के लिए एक स्ट्रिंग के रूप में एक पथ के लिए आवश्यकता है। (इस पथ का उपयोग clz फ़ाइल से इस txt फ़ाइल को लिखना है)। धन्यवाद। –

1

इससे जहां वर्तमान CLJ फ़ाइल, एक है कि इस कोड में लिखा है।

नहीं, यह नहीं करता है। यह वर्तमान निर्देशिका देता है।

क्या आपने ध्यान दिया कि कोई क्लोजर स्क्रिप्ट चला सकता है जो वर्तमान निर्देशिका में नहीं है?

+0

हाय, हाँ आप सही हैं, लेकिन प्रोजेक्ट फ़ोल्डर में रिक्त txt फ़ाइल के पथ को कैसे जानें या प्रोजेक्ट फ़ोल्डर के अंदर एक नई txt फ़ाइल बनाने के लिए। किसी भी मामले में, स्ट्रिंग के रूप में इस txt फ़ाइल का पथ आवश्यक है। और क्लोजर फ़ाइल में सभी को कोड होना चाहिए। –

+0

यदि आपको किसी प्रोजेक्ट की आवश्यकता नहीं है, लेकिन केवल क्लोजर फ़ाइल है, तो नवीनतम क्लोजर 1.9 इंस्टॉल करें जिसमें बोर्ड पर क्लोज यूटिलिटी है और निर्देश का पालन करें: https://clojure.org/reference/deps_and_cli –

3

Clojure पुस्तकालय local-file आप local-file/project-dir के साथ अपने वर्तमान प्रोजेक्ट की निर्देशिका पाने के लिए अनुमति देता है। जब तक आप जानते हैं कि आपकी प्रोजेक्ट में फ़ाइल जिस फ़ाइल को आप एक्सेस करना चाहते हैं, वह आपको इस तरह से ढूंढने में सक्षम होना चाहिए।

+0

हाय, क्या आप प्रदर्शन कर सकते हैं? आवश्यकता प्रोजेक्ट निर्देशिका में एक txt फ़ाइल के लिए स्ट्रिंग के रूप में पथ के लिए है। (इस पथ का उपयोग clz फ़ाइल से इस txt फ़ाइल को लिखना है)। धन्यवाद। –