मैं 100 जीबी के क्षेत्र में बड़ी मात्रा में डेटा को संपीड़ित करने का प्रयास कर रहा हूं, जब मैं दिनचर्या चलाता हूं तो मैंने लिखा है कि यह फ़ाइल पिछले आकार के समान आकार के बाहर आती है। क्या किसी और को GZipStream के साथ यह समस्या है?बड़े डेटा पर GZipStream
byte[] buffer = BitConverter.GetBytes(StreamSize);
FileStream LocalUnCompressedFS = File.OpenWrite(ldiFileName);
LocalUnCompressedFS.Write(buffer, 0, buffer.Length);
GZipStream LocalFS = new GZipStream(LocalUnCompressedFS, CompressionMode.Compress);
buffer = new byte[WriteBlock];
UInt64 WrittenBytes = 0;
while (WrittenBytes + WriteBlock < StreamSize)
{
fromStream.Read(buffer, 0, (int)WriteBlock);
LocalFS.Write(buffer, 0, (int)WriteBlock);
WrittenBytes += WriteBlock;
OnLDIFileProgress(WrittenBytes, StreamSize);
if (Cancel)
break;
}
if (!Cancel)
{
double bytesleft = StreamSize - WrittenBytes;
fromStream.Read(buffer, 0, (int)bytesleft);
LocalFS.Write(buffer, 0, (int)bytesleft);
WrittenBytes += (uint)bytesleft;
OnLDIFileProgress(WrittenBytes, StreamSize);
}
LocalFS.Close();
fromStream.Close();
StreamSize एक 8 बाइट UInt64 मूल्य कि फ़ाइल के आकार को धारण करता है:
मेरे कोड इस प्रकार है। मैं फ़ाइल की शुरुआत में इन 8 बाइट कच्चे लिखता हूं इसलिए मुझे मूल फ़ाइल आकार पता है। लिखेंब्लॉक में 32kb (32768 बाइट्स) का मान है। सेस्ट्रीम इस उदाहरण में, एक फ़ाइलस्ट्रीम से डेटा लेने के लिए धारा है। संपीड़ित डेटा के सामने 8 बाइट्स किसी समस्या का कारण बन रहा है?
छोटी फ़ाइलों पर अपने कोड काम करता है? –
क्या आप अपने कोड को छोटे डेटासेट को सही ढंग से संपीड़ित कर सकते हैं - उदाहरण के लिए एक टेक्स्ट फ़ाइल जिसे आप सामान्य रूप से अच्छी तरह से संपीड़ित करते हैं ... – Nik