क्या File
ऑब्जेक्ट की स्थिर विधियों का उपयोग करने के बीच एक नया FileInfo
ऑब्जेक्ट बनाने और उन तरीकों को कॉल करने के विरोध में बहुत अंतर है?फ़ाइल। डिलीट() बनाम FileInfo.Delete()
उत्तर
फर्क सिर्फ इतना है कि File
निर्दिष्ट पथ हल करना चाहिए है thess लिंक देखते हैं, जबकि FileInfo
पहले से ही होना चाहिए है हल रास्ता
आपका अर्थ है कि पथ को सापेक्ष दिया गया है, तो कार्य 'फ़ाइल हटाएं) से पहले तुरंत किया जाना चाहिए। Win32 हटाएं विधि को कॉल करें। जबकि 'FileInfo' के साथ, पथ को सृजन पर एक पूर्ण पथ के लिए पहले ही हल कर दिया गया होगा। क्या आप यह कह रहे हैं कि आप क्या कह रहे हैं? दूसरे शब्दों में, यह सीएलआर उन दृश्यों के पीछे काम करता है जो 'फ़ाइल। डेलेटे()' को दिए गए प्रदर्शन को संभावित रूप से प्रभावित कर सकते हैं, अक्सर एक ही सापेक्ष पथ के साथ पर्याप्त कहा जाता है। –
@ टिमकॉकर - यह सही है। यदि आपके पास पहले से एक FileInfo है, तो आप 'Path.GetFullPathInternal' पर कॉल सहेज सकते हैं, जो पथ को सामान्य/हल करने के लिए थोड़ा सा काम करता है। जैसे @errorstacks बताते हैं, एक एक स्थिर विधि है और एक उदाहरण है। इसलिए आप FileInfo.Delete को FileInfo के उदाहरण के बिना कॉल नहीं कर सकते हैं। मान लीजिए कि आपके पास यह है, तो एकमात्र अंतर पथ संकल्प है। – CodeNaked
नहीं, वे सुविधा के लिए दोहराया गया है
मैं उम्मीद है कि इस वसीयत आप में मदद करता है ...
IO.FileInfo
, निर्माण, प्रतिलिपि, हटाने के लिए उदाहरण के तरीके प्रदान चलती, और फ़ाइलों के उद्घाटन, और में एड्स System.IO.FileStream objects
का निर्माण। इस वर्ग को विरासत नहीं बनाया जा सकता।
मतलब यह है कि आप इस प्रक्रियाओं को पूरा करने के FileInfo के कहने/वस्तु बनाने के लिए की जरूरत है।
आईओ.फाइल फाइलों के निर्माण, प्रतिलिपि, हटाने, स्थानांतरित करने और खोलने, और System.IO.FileStream ऑब्जेक्ट्स के निर्माण में सहायता के लिए स्थिर विधियां प्रदान करता है।
मतलब यह है कि आप इस प्रक्रियाओं को पूरा करने के FileInfo के कहने/वस्तु बनाने के लिए नहीं की जरूरत है।
(यह मानते हुए यह सापेक्ष है) और अधिक जानकारी
http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx
यह निर्भर करता है। आप प्रदर्शन कर रहे हैं एक भी आपरेशन File
वर्ग का उपयोग करें और अगर आप एक ही फाइल पर कई आपरेशनों प्रदर्शन कर रहे हैं, FileInfo
का उपयोग करें।
संपादित करें: मैंने इस बिंदु को बनाया क्योंकि मेरी समझ यह है कि फ़ाइल क्लास की स्थिर विधियां हमेशा सुरक्षा की जांच करेंगी। लेकिन यदि आप FileInfo के उदाहरण का पुनः उपयोग कर रहे हैं, तो विधियां केवल पहली बार सुरक्षा जांच करेंगी और प्रत्येक आगामी कॉल पर नहीं।
जब यह मतदान करना निश्चित रूप से यह जानना ताज़ा होगा कि यह क्यों एक क्यू/ए साइट है और एक सीखने का संसाधन भी है .. अगर उत्तर पूरी तरह से दोपहर के भोजन के लिए कुछ जानकारी देता है ... – Jesse
मुझे उत्सुकता है कि आप भी क्यों नीचे उतर गए हैं। आपने वहां एक दिलचस्प बिंदु बनाया है। –
मैंने डाउनवोट नहीं किया, लेकिन शायद मेरे पास होगा। आपने अपनी सिफारिश के लिए एक बहुत ही अस्पष्ट तर्क प्रदान किया है। संदर्भों के साथ इसे वापस लें, अगर आपको लगता है कि यह सही है। –
नहीं, वे मूल रूप से एक ही बात कर रहे हैं।
दोनों Win32Native.DeleteFile()
बुला रहे हैं वहाँ लगभग कोई अंतर नहीं है। अगर मौजूद है तो दोनों फाइल हटा दें और अगर यह अस्तित्व में नहीं है तो अपवाद फेंक दें।
यह सत्य नहीं है (कम से कम अब सत्य नहीं है) FileInfo.Delete फ़ाइल में मौजूद नहीं होने पर कुछ भी नहीं करता है, http://msdn.microsoft.com/en-us/library/system.io.fileinfo.delete(v देखें = vs.110) .aspx – Robba
एक दिन प्रकाश के रूप में स्पष्ट स्थिर है, अन्य एक उदाहरण ले जाता है,! :) – leppie