c# - GZipStream and decompression -
मेरे पास कोड है जो संपीड़न करना चाहिए:
FileStream fs = new FileStream (" G: \\ gj.txt ", FileMode.Open); फ़ाइल स्ट्रीम एफडी = नया फ़ाइलस्ट्रीम ("जी: \\ gj.zip", FileMode.Create); जीज़िपस्ट्रीम सीएसस्ट्रीम = नया जीज़िपस्ट्रीम (एफडी, संपीड़नमोड। कॉम्प्रेस); बाइट [] संकुचित बफर = नया बाइट [500]; इंट ऑफ़सेट = 0; Int nRead; NRead = fs.Read (संकुचित बफर, ऑफसेट, संपीड़ित बफर। लैंग); जबकि (nRead & gt; 0) {csStream.Write (संपीड़ित बफर, ऑफसेट, एनआरआईडी); Offset = offset + nRead; NRead = fs.Read (संकुचित बफर, ऑफसेट, संपीड़ित बफर। लैंग); } Fd.close (); fs.Close ();
और मुझे लगता है कि यह करता है, लेकिन मैं जो उपरोक्त तरीके से संकुचित किया गया था उसको दबाव डालना चाहता हूँ। मैं इस तरह से कुछ करना:
<पूर्व> फ़ाइल स्ट्रीम fd = नया फ़ाइलस्ट्रीम ("जी: \\ gj.new", FileMode.Create); फ़ाइल स्ट्रीम एफएस = नया फ़ाइलस्ट्रीम ("जी: \\ gj.zip", FileMode.Open); जीज़िपस्ट्रीम सीएसस्ट्रीम = नया जीज़िपस्ट्रीम (एफएस, संपीड़नमोड। डीकंप्रेस); बाइट [] विघटित बफर = नया बाइट [500]; इंट ऑफ़सेट = 0; Int nRead; NRead = csstream.Read (डिंप्रेसेडबफ़र, ऑफ़सेट, डीकंप्रेस्डबफर। लैंग); जबकि (nRead & gt; 0) {fd.Write (decompressedBuffer, offset, nRead); Offset = offset + nRead; NRead = csstream.Read (डिंप्रेसेडबफ़र, ऑफ़सेट, डीकंप्रेस्डबफर। लैंग); } Fd.close (); fs.Close ();
और यहाँ यह नहीं है ... मुझे मिल गया है nRead = 0 befeor पाश में प्रवेश ... मैं क्या कर रहा हूँ गलत ?? मैं जिस परीक्षण फ़ाइल का उपयोग करता हूं वह सबसे सरल पाठ फ़ाइल है (आकार: 104 बाइट्स) ...
मेरी पहली सोचा है कि आपने csstream
बंद नहीं किया है यदि आप का उपयोग करके
का उपयोग करते हैं तो यह स्वचालित रूप से होता है चूंकि जीज़िप डेटा को बफर करता है, इसलिए आप कुछ भूल सकते हैं।
दूसरे; वेतन वृद्धि नहीं ऑफसेट
; यह बफर (स्ट्रीम नहीं) में ऑफसेट है 0:
का उपयोग करके (स्ट्रीम fs = File.OpenRead ("gj.txt")) का उपयोग कर (स्ट्रीम fd = File.Create ("gj.zip")) का उपयोग कर (स्ट्रीम csStream = नया जीज़िपस्ट्रीम (एफडी, संपीड़नमोड। कॉम्प्रेस)) {बाइट [] बफर = नया बाइट [1024]; Int nRead; जबकि ((nRead = fs.Read (बफर, 0, बफर। लांघ))> gt; {csstream.Write (बफर, 0, एनआरआईडी); }} का उपयोग कर (स्ट्रीम csStream = new gzipstream (fs, compressionmode.decompress) का उपयोग कर (स्ट्रीम fd = File.Create ("gj.new.txt")) का उपयोग कर (स्ट्रीम fs = File.OpenRead ("gj.zip" ) {बाइट [] बफर = नया बाइट [1024]; Int nRead; जबकि ((nRead = csstream.Read (बफर, 0, बफर। लांघ)) & gt; 0) {एफडी। विइट (बफर, 0, एनआरआईडी); }}
Comments
Post a Comment