2012-03-31 21 views
5

मैं क्लाइंट के कंप्यूटर पर किसी भी फाइल को सहेजने से बचने के लिए फ़ाइलस्ट्रीम क्लास का उपयोग करना चाहता था। लेकिन फ़ाइलस्ट्रीम के प्रत्येक कन्स्ट्रक्टर को फ़ाइल में पथ की आवश्यकता होती है।फ़ाइल स्ट्रीम को वास्तविक फ़ाइल के बिना

मैं स्ट्रीम से फ़ाइलस्ट्रीम कैसे बना सकता हूं और इसे हार्डड्राइव पर सहेजना नहीं है?

संपादित करें: मैं पहले से ही अपनी जानकारी संग्रहीत करने के लिए मेमोरीस्ट्रीम का उपयोग कर रहा हूं। लेकिन किसी बिंदु पर मुझे फ़ाइलों को किसी अन्य स्ट्रीम में ज़िप करने की आवश्यकता है। समस्या यह है कि ज़िप आदेश (मैंने GZipStream में देखा है - यह एक स्ट्रीम में FILES को ज़िप करता है) मुझे एक स्रोत फ़ाइलपैथ (फ़ाइलस्ट्रीम) की आवश्यकता होती है।

यदि मैं स्ट्रीम से फ़ाइलस्ट्रीम बनाकर आगे नहीं बढ़ सकता, तो स्ट्रीम को ज़िप करने का कोई और तरीका है?

+0

फ़ाइलस्ट्रीम फ़ाइल में लिखना है, मेमोरीस्ट्रीम का उपयोग – Reniuz

+0

का उपयोग करना पूरी तरह गलत है कि GZipStream प्रक्रियाओं * फ़ाइलों *। ऐसा नहीं होता। यह एक बाइट-स्ट्रीम को संसाधित करता है और फ़ाइलों के बारे में परवाह नहीं करता है। आपको अपने परिदृश्य को और अधिक समझाने की ज़रूरत है, शायद एक कोड जो वास्तव में एक फ़ाइल चाहता है दिखा रहा है। आप मनमानी स्रोतों/गंतव्यों के साथ काम करने के लिए GZipStream का उपयोग कर सकते हैं। आपको वास्तव में यह बताने की जरूरत है कि आप किस पर फंस रहे हैं। यदि आपने "GZipStream में देखा" और उस निष्कर्ष पर पहुंचा, तो आप गलत लग रहे थे। –

उत्तर

9

इस परिदृश्य में आपको केवल MemoryStream का उपयोग करना चाहिए, और यह सुनिश्चित करना चाहिए कि आपका एपीआई के बजाय Stream की मांग करे। उदाहरण के लिए:

using(var ms = new MemoryStream()) { 
    YourCode(ms); 
} 

वैकल्पिक रूप से आप Path.GetTempFileName() के माध्यम से, अस्थायी क्षेत्र में एक फ़ाइल का उपयोग करके FileStream का उपयोग कर रख सकते हैं।

1

आप या तो अन्य स्ट्रीम प्रकारों (जैसे मेमोरीस्ट्रीम) का उपयोग कर सकते हैं या फ़ाइलस्ट्रीम से अपनी खुद की कक्षा प्राप्त कर सकते हैं जो कुछ भी नहीं करेगा (या जहां भी आपको आवश्यकता हो) लिखें।

0

फाइलस्ट्रीम फ़ाइलों के साथ काम करता है। आप इस व्यवहार को नहीं बदल सकते हैं।

आप से MemoryStream जैसे अन्य * स्ट्रीम कक्षाओं को विरासत में देख सकते हैं।

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