2011-07-08 16 views
12

क्याअंतर/हटा सकते हैं और ले जाएँ

  1. के बीच एक फ़ाइल कॉपी कर रहा है और फ़ाइल को ले जाने File.Copy() और File.Delete()
  2. का उपयोग कर इसे हटाने File.Move()

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

उत्तर

8

फ़ाइल। फ़ाइल को एक पथ से दूसरे पथ में स्थानांतरित करने के लिए फ़ाइल विधि का उपयोग किया जा सकता है। यह विधि डिस्क वॉल्यूम्स में काम करती है, और यदि स्रोत और गंतव्य समान हैं तो यह अपवाद नहीं फेंकता है।

आप मौजूदा फ़ाइल को ओवरराइट करने के लिए मूव विधि का उपयोग नहीं कर सकते हैं। यदि आप उस निर्देशिका में उसी नाम की फ़ाइल को स्थानांतरित करके फ़ाइल को प्रतिस्थापित करने का प्रयास करते हैं, तो आपको IOException मिलता है। इस पर काबू पाने के लिए आप कॉपी और हटाएं विधियों के संयोजन का उपयोग कर सकते हैं

+0

ठीक है, धन्यवाद। अच्छे अंक। लेकिन मैं अभ्यास संचालन करने के लिए आवश्यक अनुमति जानना चाहता हूं। कॉपी करने के लिए कहें मुझे अनुमति 'पढ़ने' की आवश्यकता है और हटाने के लिए मुझे फ़ाइल ..etc पर 'संशोधित' अनुमति की आवश्यकता है? स्थानांतरित करने के लिए ??? – Lamps

+0

चाल कॉपी और डिलीट का संयोजन है, इसलिए यदि आपके पास इस ऑपरेशन के लिए अनुमति है तो –

+0

स्थानांतरित करने के लिए किसी भी अतिरिक्त अनुमति की आवश्यकता नहीं है। मैं समझ गया। मुझे लगता है कि हटाए जाने और संचालन को स्थानांतरित करने के लिए हमें फ़ाइल पर अनुमति संशोधित करने की आवश्यकता है। – Lamps

0

मुझे नहीं लगता कि अनुमति में कोई अंतर है, लेकिन मैं व्यक्तिगत रूप से File.Move() का उपयोग करना पसंद करूंगा, तब से आपके पास दोनों कार्य हैं एक ही "लेनदेन" में हो रहा है। दूसरे शब्दों में यदि चाल पर कुछ विफल रहता है तो पूरा ऑपरेशन विफल हो जाता है। हालांकि, अगर आप दो चरणों में इसे तोड़ते हैं (प्रतिलिपि + हटाएं) यदि प्रतिलिपि काम करती है और असफल हो जाती है, तो आपको मैन्युअल रूप से "लेनदेन" (प्रतिलिपि हटाएं) को उलट करना होगा।

0

फ़ाइल स्थानांतरण पर अनुमति दो बिंदुओं: स्रोत, और गंतव्य पर जांच की जाती है। इसलिए, यदि आपके पास स्रोत फ़ोल्डर में अनुमति नहीं है, या आपके पास गंतव्य में अनुमति नहीं है, तो इन विधियों दोनों AccessDeniedException अपवाद फेंक देते हैं। दूसरे शब्दों में, अनुमति जांच उपयोग में विधि के लिए अज्ञेयवादी है।

3
प्रदर्शन बुद्धिमान

, अगर एक और एक ही फाइल सिस्टम पर, एक फाइल आगे बढ़ (सरल शब्दों में) बस, फाइल सिस्टम में ही (संभवतः एक red/black-tree में कुछ नोड्स को व्यवस्थित) के कुछ आंतरिक रजिस्टरों का समायोजन वास्तव में ले जाए बिना है कुछ कुछ।

कल्पना कीजिए कि आपके पास 180 एमआईबी है, और आप अपनी डिस्क पर लगभग 30 एमआईबी/एस पर लिख सकते हैं। फिर कॉपी/डिलीट के साथ, इसे समाप्त होने में लगभग 6 सेकंड लगते हैं। एक साधारण चाल [एक ही फाइल सिस्टम] के साथ, यह इतनी तेजी से चला जाता है कि आप इसे महसूस भी नहीं कर सकते हैं।

(मैंने एक बार कुछ लेनदेन फाइल सिस्टम हेल्पर्स लिखा था जो जितनी जल्दी संभव हो सके प्रतिबद्ध करने के लिए कई फ़ाइलों को स्थानांतरित या प्रतिलिपि बनाते थे, मैंने सभी चीजों को पहले अस्थायी उप-फ़ोल्डर में स्थानांतरित/कॉपी किया था, और फिर अंतिम प्रतिबद्धता मौजूदा डेटा को किसी अन्य फ़ोल्डर (रोलबैक को सक्षम करने के लिए), और लक्ष्य तक नया डेटा ले जायेगी)।

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