2013-01-15 14 views
6

मुझे अपने प्रश्न पर कोई जानकारी नहीं मिल रही है। कृपया मुझे क्षमा करें यदि मेरे खोज प्रयास उत्तर खोजने के लिए पर्याप्त नहीं हैं। मैं बस अपने पहियों कताई से बचना चाहता हूँ।क्या WebClient.DownloadFileAsync फ़ाइल को ओवरराइट करता है यदि यह डिस्क पर पहले से मौजूद है?

धन्यवाद!

अनुवर्ती: यदि यह ओवरराइट नहीं करता है, तो मैं इसे कैसे प्राप्त कर सकता हूं (यदि संभव हो)?

+0

ऐसा लगता है कि यह बस कोशिश करने और खोजने के लिए पर्याप्त आसान होगा। अगर ऐसा नहीं होता है; डाउनलोड करने से पहले इसे डाउनलोड करने और हटाने से पहले उस नाम के साथ फ़ाइल की जांच करें। – Servy

+1

यह Google के लिए एक अच्छा सवाल प्रतीत होता है, अगर आप मुझसे पूछें (जो आपने किया था!);] – plast1K

उत्तर

21

एक 30 दूसरे टेस्ट की पुष्टि करता है इसे अधिलेखित है कि

टेस्ट:

using (WebClient client = new WebClient()) 
{ 
    client.DownloadFileAsync(new Uri("http://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe"), @"C:\Test.exe"); 
} 

अगर, फिर downlaoded

+0

धन्यवाद। मैं मदद की सराहना करता हूं। – Kashif

+7

धन्यवाद, मैंने अभी 28 सेकंड बचाया है। :-) –

+0

मुझे भी ... यह विवरण दस्तावेज़ों में नहीं था –

0

हाँ फ़ाइल मौजूद है, तो Test.exe overwitten है।

यदि आप इसका नाम बदल रहे हैं, या यदि आपने इसे OpenFileDialogue() में लगाया है, तो यह आपका विवेकाधिकार है।

2

WebClient कक्षा स्पष्ट रूप से बहुत अधिक विस्तार और नियंत्रण को दबाने के लिए डिज़ाइन की गई है। आप फ़ाइल को असीमित रूप से फ़ाइल डाउनलोड करने के लिए अपनी विधि लिख सकते हैं और यह नियंत्रित कर सकते हैं कि डिस्क पर डाउनलोड किया गया डेटा कैसे लिखा जाता है।

मुझे पता है कि कोडप्रोजेक्ट पर this solution एक वर्ग है जो WebRequest और WebResponse का उपयोग कर फ़ाइल डाउनलोड करता है जो अधिक नियंत्रण के लिए अनुमति देता है। webdata नामक वर्ग देखें। कोड आप भी ध्यान देने की जरूरत है सकते हैं:

FileStream newFile = new FileStream(targetFolder + file, FileMode.Create); 
newFile.Write(downloadedData, 0, downloadedData.Length); 
newFile.Close(); 

FileMode Enumeration सदस्यों को बताया कि एक फ़ाइल FileMode.CreateNew बचत करता है, तो एक फ़ाइल पहले से मौजूद एक IOException फेंक होगा के व्यवहार हुक्म की एक श्रृंखला शामिल है। जहां FileMode.Create संभव हो तो फ़ाइलों को ओवरराइट करेगा।

आप WebClient.DownloadFileAsync तो उपयोग करते हुए, के रूप में अन्य दोस्तों को पहले से ही उल्लेख किया है पर जोर देते हैं: तुम सिर्फ उपयोगकर्ता है कि किसी मौजूदा फ़ाइल को एक OpenFileDialog के माध्यम से ओवरराइट किया जाएगा सूचित कर सकते हैं, लेकिन कुछ डाउनलोड समय लग सकता है और वहाँ कहने के लिए कुछ भी नहीं है कि उपयोगकर्ता ने डाउनलोड के दौरान एक और फाइल नहीं बनाई है।

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