2011-10-14 16 views
13

क्या File ऑब्जेक्ट की स्थिर विधियों का उपयोग करने के बीच एक नया FileInfo ऑब्जेक्ट बनाने और उन तरीकों को कॉल करने के विरोध में बहुत अंतर है?फ़ाइल। डिलीट() बनाम FileInfo.Delete()

+2

एक दिन प्रकाश के रूप में स्पष्ट स्थिर है, अन्य एक उदाहरण ले जाता है,! :) – leppie

उत्तर

10

फर्क सिर्फ इतना है कि File निर्दिष्ट पथ हल करना चाहिए है thess लिंक देखते हैं, जबकि FileInfo पहले से ही होना चाहिए है हल रास्ता

+0

आपका अर्थ है कि पथ को सापेक्ष दिया गया है, तो कार्य 'फ़ाइल हटाएं) से पहले तुरंत किया जाना चाहिए। Win32 हटाएं विधि को कॉल करें। जबकि 'FileInfo' के साथ, पथ को सृजन पर एक पूर्ण पथ के लिए पहले ही हल कर दिया गया होगा। क्या आप यह कह रहे हैं कि आप क्या कह रहे हैं? दूसरे शब्दों में, यह सीएलआर उन दृश्यों के पीछे काम करता है जो 'फ़ाइल। डेलेटे()' को दिए गए प्रदर्शन को संभावित रूप से प्रभावित कर सकते हैं, अक्सर एक ही सापेक्ष पथ के साथ पर्याप्त कहा जाता है। –

+0

@ टिमकॉकर - यह सही है। यदि आपके पास पहले से एक FileInfo है, तो आप 'Path.GetFullPathInternal' पर कॉल सहेज सकते हैं, जो पथ को सामान्य/हल करने के लिए थोड़ा सा काम करता है। जैसे @errorstacks बताते हैं, एक एक स्थिर विधि है और एक उदाहरण है। इसलिए आप FileInfo.Delete को FileInfo के उदाहरण के बिना कॉल नहीं कर सकते हैं। मान लीजिए कि आपके पास यह है, तो एकमात्र अंतर पथ संकल्प है। – CodeNaked

0

नहीं, वे सुविधा के लिए दोहराया गया है

0

मैं उम्मीद है कि इस वसीयत आप में मदद करता है ...

IO.FileInfo, निर्माण, प्रतिलिपि, हटाने के लिए उदाहरण के तरीके प्रदान चलती, और फ़ाइलों के उद्घाटन, और में एड्स System.IO.FileStream objects का निर्माण। इस वर्ग को विरासत नहीं बनाया जा सकता।

मतलब यह है कि आप इस प्रक्रियाओं को पूरा करने के FileInfo के कहने/वस्तु बनाने के लिए की जरूरत है।

आईओ.फाइल फाइलों के निर्माण, प्रतिलिपि, हटाने, स्थानांतरित करने और खोलने, और System.IO.FileStream ऑब्जेक्ट्स के निर्माण में सहायता के लिए स्थिर विधियां प्रदान करता है।

मतलब यह है कि आप इस प्रक्रियाओं को पूरा करने के FileInfo के कहने/वस्तु बनाने के लिए नहीं की जरूरत है।

(यह मानते हुए यह सापेक्ष है) और अधिक जानकारी

http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx

http://msdn.microsoft.com/en-us/library/system.io.file.aspx

1

यह निर्भर करता है। आप प्रदर्शन कर रहे हैं एक भी आपरेशन File वर्ग का उपयोग करें और अगर आप एक ही फाइल पर कई आपरेशनों प्रदर्शन कर रहे हैं, FileInfo का उपयोग करें।

संपादित करें: मैंने इस बिंदु को बनाया क्योंकि मेरी समझ यह है कि फ़ाइल क्लास की स्थिर विधियां हमेशा सुरक्षा की जांच करेंगी। लेकिन यदि आप FileInfo के उदाहरण का पुनः उपयोग कर रहे हैं, तो विधियां केवल पहली बार सुरक्षा जांच करेंगी और प्रत्येक आगामी कॉल पर नहीं।

+3

जब यह मतदान करना निश्चित रूप से यह जानना ताज़ा होगा कि यह क्यों एक क्यू/ए साइट है और एक सीखने का संसाधन भी है .. अगर उत्तर पूरी तरह से दोपहर के भोजन के लिए कुछ जानकारी देता है ... – Jesse

+0

मुझे उत्सुकता है कि आप भी क्यों नीचे उतर गए हैं। आपने वहां एक दिलचस्प बिंदु बनाया है। –

+1

मैंने डाउनवोट नहीं किया, लेकिन शायद मेरे पास होगा। आपने अपनी सिफारिश के लिए एक बहुत ही अस्पष्ट तर्क प्रदान किया है। संदर्भों के साथ इसे वापस लें, अगर आपको लगता है कि यह सही है। –

1

नहीं, वे मूल रूप से एक ही बात कर रहे हैं।

4

दोनों Win32Native.DeleteFile()

0

बुला रहे हैं वहाँ लगभग कोई अंतर नहीं है। अगर मौजूद है तो दोनों फाइल हटा दें और अगर यह अस्तित्व में नहीं है तो अपवाद फेंक दें।

+0

यह सत्य नहीं है (कम से कम अब सत्य नहीं है) FileInfo.Delete फ़ाइल में मौजूद नहीं होने पर कुछ भी नहीं करता है, http://msdn.microsoft.com/en-us/library/system.io.fileinfo.delete(v देखें = vs.110) .aspx – Robba