2010-09-17 10 views

उत्तर

2

मुझे लगता है कि कई तरीके हैं। probe-file उसके बाद यह निर्धारित करने के लिए लौटा हुआ सही नाम जांच कर रहा है कि उसके पास एक निर्देशिका नाम है लेकिन फ़ाइल नाम नहीं है और टाइप करना चाहिए। जैसे एक निर्देशिका के लिए

(pathname-name (probe-file filespec)) 

-> NIL 
+0

अपने समाधान की कोशिश करते समय मुझे एहसास हुआ कि इस कोड को कोई फ़ाइल या निर्देशिका 'filespec' नहीं होने पर त्रुटि होगी। मैं कम त्रुटि प्रवण कोड के लिए 'और' का उपयोग करने का सुझाव दूंगा: '(और (जांच-फ़ाइल फाइलपेक) (नहीं (पथनाम-नाम (जांच-फ़ाइल फाइलपेक)))' – Sim

+1

यह काम नहीं करेगा। यह स्पष्ट नहीं है कि 'PROBE-FILE' निर्देशिकाओं पर काम करता है। यह भी स्पष्ट नहीं है कि निर्देशिकाओं के लिए 'पथनाम-नाम' रिटर्न 'NIL' है। आम तौर पर यह कार्यक्षमता आम लिस्प द्वारा प्रदान नहीं की जाती है और अधिकांश कार्यान्वयन के लिए एक कार्य होता है। पुस्तकालय पोर्टेबल नाम प्रदान करते हैं ... –

0

CLISP में एक फ़ंक्शन EXT:PROBE-DIRECTORY है, जो आपको बताता है कि कोई फ़ाइल मौजूद है या कोई निर्देशिका है।

ध्यान दें कि यह कार्य CLISP के लिए विशिष्ट है और मानक सामान्य सूची नहीं है।

+0

मुझे खेद है, लेकिन क्या जीएनयू कॉमन लिस्प और जीएनयू सीएलआईएसपी समान है? मैं जीएनयू कॉमन लिस्प (विंडोज़ पर जीसीएल 2.6.6) का उपयोग कर रहा हूं लेकिन मुझे कहा गया पैकेज "एक्सटी" नहीं मिला। –

+0

@hyper: नहीं, जीसीएल और सीएलआईएसपी आम लिस्प भाषा के दो अलग-अलग कार्यान्वयन हैं। चूंकि आपने इस 'क्लिसप' को टैग किया है, मुझे लगता है कि आप बाद वाले का उपयोग कर रहे थे। – sepp2k

+0

क्लिस टैग हटा दिया गया। धन्यवाद! –

1

CL-FAD एक समारोह DIRECTORY-EXISTS-P, जो जब PATHNAME-AS-DIRECTORY साथ संयोजन में उपयोग पथ नाम canonicalizes और achives आप जो चाह रहे हैं (विफलता जब की तरह "/ path/dir-बिना-पीछे-स्लैश" एक स्ट्रिंग सौंप दिया रोकता है) है।

(सीएल-एफएडी: निर्देशिका-पथ नाम-पी (सीएल-एफएडी: पथ नाम-रूप-निर्देशिका (जांच-फ़ाइल "/ path/लापता-स्लैश")))

+0

ऐसा नहीं लगता है कि यह जीसीएल के साथ काम करेगा। कम से कम जीसीएल "समर्थित लिस्प कार्यान्वयन" के तहत सूचीबद्ध नहीं है – sepp2k

+0

मुझे लगता है कि अच्छी खबर यह है कि, जैसा कि आप जानते हैं कि जीसीएल के पास एक दशक से अधिक समय तक रिलीज नहीं हुआ है, अगर आपको पता चलता है कि इसे कैसे करना है तो आपको शायद जल्द ही आप पर किसी भी समय बदलने के बारे में चिंता करें! – Ken

+0

मैंने सीएल-एफएडी के स्रोत कोड की जांच की - कहा गया कार्य केवल एलेग्रो और लिस्पॉर्क्स के लिए काम करता है। –

4

एक portable pathname library से के बारे में अध्याय पढ़ें पीटर सेबेल की Practical Common Lisp पुस्तक। यह मुफ्त में उपलब्ध है। इसमें एक फ़ंक्शन फ़ाइल-मौजूद है-p जो फ़ाइल पथ मौजूद है या शून्य होने पर पथनाम वापस कर देगा। लौटाया गया पथनाम निर्देशिका रूप में होगा यदि यह निर्देशिका है। वह यह जांचने के लिए एक और कार्य भी देता है कि पथनाम वास्तव में निर्देशिका रूप में है या नहीं।

बीटीडब्ल्यू पूरी किताब वास्तव में पढ़ने लायक है तो अगर आप पहले से नहीं हैं तो इसे जांचें।

+2

सीएल-एफएडी लाइब्रेरी * * पीटर सेबेल का अध्याय है, जिसे सामान्य उपयोग के लिए पैक किया गया है। डायरेक्ट्री-एक्सिस्ट्स-पी फ़ंक्शन ठीक वही करता है जो आप वर्णन करते हैं। – Ken

+0

मुझे यह नहीं पता था। जानकारी के लिए धन्यवाद। – jondro

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