लौटने के बाद अस्थायी फ़ाइलों को हटा नहीं सकता है मेरे पास एक सी # एमवीसी अनुप्रयोग में एक फ़ंक्शन है जो एक अस्थायी निर्देशिका और एक अस्थायी फ़ाइल बनाता है, फिर फ़ाइलस्ट्रीम का उपयोग कर फ़ाइल खोलता है, फ़ाइलस्ट्रीम को कॉलिंग फ़ंक्शन पर लौटाता है, और उसके बाद इसकी आवश्यकता होती है अस्थायी फ़ाइलों को हटा दें। हालांकि, मुझे नहीं पता कि temp निर्देशिका और फ़ाइल को कैसे हटाया जाए क्योंकि यह हमेशा यह कहता है कि "प्रक्रिया फ़ाइल तक नहीं पहुंच सकती क्योंकि यह किसी अन्य प्रक्रिया द्वारा उपयोग की जा रही है।" मैंने यही कोशिश की, लेकिन फाइलस्ट्रीम अभी भी अंत में ब्लॉक में temp फ़ाइल का उपयोग कर रहा है। मैं फ़ाइलस्ट्रीम कैसे वापस कर सकता हूं और अस्थायी फ़ाइलों को हटा सकता हूं?फ़ाइलस्ट्रीम
public FileStream DownloadProjectsZipFileStream()
{
Directory.CreateDirectory(_tempDirectory);
// temporary file is created here
_zipFile.Save(_tempDirectory + _tempFileName);
try
{
FileStream stream = new FileStream(_tempDirectory + _tempFileName, FileMode.Open);
return stream;
}
finally
{
File.Delete(_tempDirectory + _tempFileName);
Directory.Delete(_tempDirectory);
}
}
समारोह FileStream इस तरह दिखता है के लिए वापस आ गया है:
public ActionResult DownloadProjects()
{
ProjectDownloader projectDownloader = new ProjectDownloader();
FileStream stream = projectDownloader.DownloadProjectsZipFileStream();
return File(stream, "application/zip", "Projects.zip");
}
अद्यतन: मैं ज़िप फ़ाइल उल्लेख करना भूल गया 380 MB है। मेमोरीस्ट्रीम का उपयोग करते समय मुझे स्मृति अपवाद से सिस्टम मिल जाता है।
'FileStream' फ़ाइल खुला, क्यों तुम भी फ़ाइल को नष्ट करने में सक्षम हो की उम्मीद करते हैं है? इससे लौटाया गया 'फाइलस्ट्रीम' अनुपयोगी होगा। –
_zipFile का प्रकार क्या है? –
आपको वास्तव में फ़ाइल की आवश्यकता नहीं है, इसके बजाय मेमोरी स्ट्रीम में सहेजें। –