2011-06-03 26 views
18

मैंने इस शब्द को ब्रांडेड देखा है लेकिन मुझे वास्तव में समझ में नहीं आता कि आप स्मृति में फ़ाइल कैसे खोलते हैं।स्मृति में फ़ाइल कैसे खोलें?

मेरे पास एक अस्थायी स्थान में डिस्क पर लिखी गई फाइलें हैं, लेकिन जब कोई निश्चित रूप बंद हो जाता है तो इसे साफ करने की आवश्यकता होती है और जब यह खुला होता है तो मैं इसे नहीं कर सकता। यह जरूरी है कि यह फ़ोल्डर खाली हो जाए। मैं सोच रहा था कि क्या मैंने स्मृति में फ़ाइलों को खोला है या नहीं, इससे कोई फर्क पड़ता है?

+1

यह आपके द्वारा किए जा रहे कार्यों पर निर्भर करता है। – SLaks

+0

मेरे पास दाईं ओर प्रदर्शित थंबनेल हैं - उपयोगकर्ता डबल क्लिक करता है और यह पीडीएफ फ़ाइल खोलता है। – rik

उत्तर

41
MemoryStream inMemoryCopy = new MemoryStream(); 
using (FileStream fs = File.OpenRead(path)) 
{ 
    fs.CopyTo(inMemoryCopy); 
} 
// Now you can delete the file at 'path' and still have an in memory copy 
+0

बांध यह है, हम .NET 3.5 का उपयोग कर रहे हैं और इस तरह मैं fs.copyto – rik

+0

का उपयोग नहीं कर सकता, आप आसानी से उस CopyTo एक्सटेंशन विधि को दोहरा सकते हैं। यहाँ ढूँढे। –

+0

का मतलब है कि प्रतिलिपि विस्तार के लिए प्रवाह के लिए प्रवाह पर खोज स्टैक? – rik

4

मुझे लगता है कि आप मेमोरी मैप फ़ाइलों नेट के लिए हाल ही में जोड़ा 4.

http://blogs.msdn.com/b/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx

Memory Mapped Files .NET

+0

अच्छी सोच लेकिन मेमोरी मैप की गई फाइलें अभी भी मूल फ़ाइल में अपनी मैपिंग बरकरार रखती हैं और अन-मैपिंग के बाद फ़ाइल में किसी भी इन-मेमोरी परिवर्तन को वापस लिखती हैं, इसलिए इस परिदृश्य में उपयोगी नहीं है। –

2

आप DeleteOnCloseFileStream निर्माता के पैरामीटर का उपयोग कर सकते हैं के साथ काम करना चाहते हैं:

FileStream fs = new FileStream("<Path Here>", FileMode.Create, 
    FileAccess.ReadWrite, FileShare.None, 1024, FileOptions.DeleteOnClose); 

और बंद होने पर फ़ाइल हटा दी जाएगी।

2

मुझे लगता है कि इसका मतलब है कि उस फ़ाइल की सामग्री को संपूर्ण रूप से स्मृति में पढ़ना है और फिर फ़ाइल से कनेक्शन बंद करना है। यह मान लिया जाये कि है एक फ़ाइल है कि बहुत बड़ा नहीं है तुम सिर्फ एक बाइट [] में पढ़ सकता है: यह एक पाठ फ़ाइल के लिए एक स्ट्रिंग

string fileContent = File.ReadAllText(fileName); 

का उपयोग करते हुए इसे पढ़ा है, तो एक बार जब आप यह है कि किया है

byte[] fileContent = File.ReadAllBytes(fileName); 

बाद में इसे पढ़ने के लिए StreamReader का उपयोग करें क्योंकि आप डिस्क पर एक फ़ाइल करेंगे।

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