मैं वर्तमान में किसी उपयोगकर्ता द्वारा परिभाषित फ़ाइल में फ़ाइल सहेजने वाले कुछ कोड के साथ काम कर रहा हूं। यदि उपयोगकर्ता बिना किसी एक्सटेंशन के फ़ाइल नाम में गुजरता है, तो कोड फ़ाइल प्रकार (आंतरिक रूप से संग्रहीत) के आधार पर एक्सटेंशन को स्वत: पता लगाता है।एक फ़ाइल एक्सटेंशन के भीतर मौजूद रिक्त स्थान हो सकता है?
हालांकि, मुझे यह निर्धारित करने में कठिनाई हो रही है कि कोड में पास किए गए फ़ाइल नाम का विस्तार है या नहीं। मैं Path.HasExtension(filename)
और Path.GetExtension(filename)
उपयोग कर रहा हूँ, लेकिन यह अजीब व्यवहार का प्रदर्शन किया जा रहा है:
File.EXT
=>.EXT
विस्तार है। यह ठीक है।
This Is A File.EXT
=>.EXT
विस्तार है। यह भी ठीक है।
This Is A File. Not An Extension
=>. Not An Extension
विस्तार है। हालांकि, मैं इसे विस्तार के बिना फ़ाइल के रूप में सोचूंगा। विंडोज़ भी ऐसा सोचता है जब मैं इस नाम के साथ फाइल बनाता हूं (एक अपरिचित विस्तार वाली फाइल बनाने के कारण विंडोज़ इसे EXTENSIONNAME File
कहता है, जबकि इस तरह के एक्सटेंशन के बिना फाइलें सिर्फ File
कहलाती हैं)।
This Is A File.Not An Extension
=>.Not An Extension
विस्तार है। उपरोक्त के समान समस्या।
यह भी ध्यान रखें कि यह वही व्यवहार Path.GetFileNameWithoutExtension(filename)
में स्पष्ट है (उदाहरण के लिए यह पिछले दो उदाहरणों पर विस्तार के बिना फ़ाइल नाम की रिपोर्ट करता है, केवल This Is A File
)।
तो मैं इससे क्या ले रहा हूं यह है कि .NET और Windows एक विस्तार के रूप में जो सोचते हैं उस पर भिन्न होते हैं।
प्रश्न: मैं सोच रहा हूँ अगर यह ठीक है मुझे इस जैसे कोड को लागू करने के लिए:
if(!Path.HasExtension(filename) || Path.GetExtension(filename).Contains(" ")) {...}
के बाद से है कि एक उचित विस्तार के अपने कोड की परिभाषा अधिक खींच होगा विंडोज़ चीजों के साथ कैसे व्यवहार करता है। या क्या मैं यहां कुछ खो रहा हूं जो स्पष्ट रूप से कहता है कि मुझे अपने एक्सटेंशन में रिक्त स्थान की अनुमति देनी चाहिए?
मैंने खोज की है और this slightly similar question पाया है, लेकिन इसमें जुड़े दस्तावेज़ केवल निर्दिष्ट करते हैं कि किसी स्थान/अवधि के साथ एक्सटेंशन को समाप्त करने की अनुशंसा नहीं की जाती है - वे एक्सटेंशन के भीतर रिक्त स्थान के बारे में कुछ भी नहीं कहते हैं।
मैं एक फ़ाइल 'यह एक फ़ाइल बनाने में सक्षम हूं। विंडोज 7 और विंडोज एक्सपी दोनों का उपयोग करके एक एक्सटेंशन नहीं '। फ़ाइल बनाने के लिए मैं डेस्कटॉप, नया, टेक्स्ट दस्तावेज़ 'पर राइट क्लिक करता हूं। या आप नेट का उपयोग कर फाइल बनाने के बारे में बात कर रहे हैं? –
@ थॉमस मैं उन फ़ाइलों को या तो .NET या विंडोज 7 के साथ बना सकता हूं। मेरा मुद्दा यह है कि विंडोज़ फ़ाइल एक्सटेंशन के रूप में "एक्सटेंशन नहीं" को पहचानता है, जबकि .NET करता है। – NickAldwin