File.Move
के प्रलेखन से:नकल File.Move यदि गंतव्य पहले से मौजूद है
ध्यान दें कि यदि आप उस निर्देशिका में एक ही नाम के एक फ़ाइल को ले जाकर एक फ़ाइल को बदलने के प्रयास करते हैं, तो आप एक IOException मिलता है। आप किसी मौजूदा फ़ाइल को ओवरराइट करने के लिए मूव विधि का उपयोग नहीं कर सकते हैं।
संक्षेप में, आप Move
पर ओवरराइट नहीं कर सकते, इसलिए क्रम में ले जाएँ मैं एक File.Copy
एक File.Delete
द्वारा पीछा करके व्यवहार की नकल पर अधिलेखन की सुविधा के लिए। कुछ की तरह:
if (File.Exists(dstFileName))
{
// System.IO.File.Move cannot be used to overwrite existing files, so we're going
// to simulate that behavior with a Copy & Delete.
File.Copy(procContext.FileName, dstFileName);
File.Delete(procContext.FileName);
}
else
File.Move(procContext.FileName, dstFileName);
मेरा प्रश्न है: क्या कोई स्थितियों है कि मैं जो से बचने के लिए की जरूरत है स्रोत फ़ाइल का नेतृत्व कर सकेगी बिना यह पहली बार सफलतापूर्वक कॉपी किया जा रहा नष्ट कर दिया जा रहा है?
प्रलेखन पढ़ने से मेरी समझ यह है कि File.Copy
किसी भी मामले में अपवाद फेंकने के बाद से कुछ भी वापस नहीं लौटाता है कि यह सफल नहीं होता है। क्या किसी ने किसी भी परिस्थिति का सामना किया है जहां यह सच नहीं है?
नहीं यह द्वारा पीछा किया, एक लक्ष्य फ़ाइल पर हटाना यदि वह मौजूद है ऐसा करने के लिए सुरक्षित होगा शुरुआत में आपके जैसे कदम क्या थे? – Tudor
@ ट्यूडर - जरूरी नहीं। यदि चाल विफल हो जाती है, तो मूल गंतव्य फ़ाइल भी चली जाएगी जो वास्तव में अपेक्षित व्यवहार नहीं है। –
लेकिन आपके प्रश्न से मैं यह समझता हूं कि यदि ड्राइव में मौजूद होने पर आपको फ़ाइल को ओवरराइट करने की अनुमति दी जाती है, तो आप इसे कॉपी + डिलीट करने के बजाय उपयोग करेंगे। तो मुझे लगता है कि आप उस जोखिम को लेने के इच्छुक हैं? – Tudor