लिस्पवर्क्स का fast-directory-files fdf-handle-* फ़ंक्शन के साथ बहुत आशाजनक लगता है। निर्देशिका में फ़ाइलों तक तेज़ पहुंच पृष्ठ लिस्पवर्क्स मैनुअल कहता है,

फ़ास्ट-निर्देशिका-फ़ाइलें निर्देशिका की तुलना में फ़ाइलों तक पहुँचने का तेज़ तरीका देती हैं, विशेष रूप से उन स्थितियों में जब आपको आकार और पहुँच समय, या फ़िल्टर जैसी सरल सुविधाओं के आधार पर फ़िल्टर करने की आवश्यकता होती है निर्देशिका की तुलना में अधिक जटिल तरीके से नाम के आधार पर।

मैं यह समझने की कोशिश कर रहा हूं कि उनका उपयोग कैसे किया जा सकता है, लेकिन मैं दस्तावेज़ीकरण में थोड़ी अस्पष्टता के साथ मिल रहा हूं, इस तथ्य के अलावा कि मैं आम लिस्प के लिए काफी नया हूं।

उदाहरण के तौर पर मान लें कि कोई व्यक्ति fdf-handle-size का उपयोग करके किसी फ़ाइल का फ़ाइल आकार प्राप्त करना चाहेगा। विस्तृत मैन्युअल पृष्ठ कोई उदाहरण और पाठ प्रस्तुत नहीं करता है थोड़ा अटपटा लगता है। उदाहरण के लिए,

fdf-हैंडल तक निम्नलिखित पाठक पहुंच सकते हैं। फ़ाइल के पूर्ण पथ पर कॉल किए जाने पर कोष्ठक में नामित कार्य समान मान लौटाएंगे:

fdf-handle-size फ़ाइल का आकार बाइट्स में लौटाता है।

[आदि।]

नोट कहते हैं,

fdf-हैंडल का उपयोग केवल उस कॉलबैक के गतिशील दायरे के भीतर किया जा सकता है जिसमें इसे पारित किया गया था।

परीक्षण और त्रुटि से मैं इस बिंदु पर पहुंच गया (बेशक गलत):

CL-USER 1 > (let (file-size)
  (fast-directory-files "/temp/a.txt"
                        #'(lambda (path handle)
                           (push (fdf-handle-size handle) file-size))))
("save.lisp" "a.txt" "a.lisp")

/temp/a.txt के लिए कोई फ़ाइल आकार कैसे प्राप्त कर सकता है? इससे भी महत्वपूर्ण बात यह है कि लिस्पवर्क्स के fast-directory-files को fdf-handle-* सामान्य रूप से कैसे उपयोग करना चाहिए?

0
gsl 7 जुलाई 2019, 15:25

1 उत्तर

सबसे बढ़िया उत्तर

उपरोक्त स्निपेट कॉलबैक के आउटपुट को वापस नहीं करता है। इसलिए

(let (file-size)
  (fast-directory-files "/temp/a.txt"
                        #'(lambda (path handle)
                           (push (fdf-handle-size handle) file-size)))
  file-size)

निर्देशिका में सभी फ़ाइलों के लिए फ़ाइल आकार की एक सूची में परिणाम होगा।

यह भी ध्यान दें कि Fast-directory-files एक dir-pathname को स्वीकार करता है - इरादा एक निर्देशिका में सभी फाइलों से निपटने का है इसलिए a.txt को नजरअंदाज कर दिया जाता है।

यदि आपको केवल एक फ़ाइल के आकार की आवश्यकता है - इसे खोलें और फ़ाइल-लंबाई का उपयोग करें (पाठ्यक्रम के तत्व आकार पर ध्यान देना)।

2
David Hodge 8 जुलाई 2019, 21:51