हाय सभी के इनपुट के लिए धन्यवाद। यह पता चला कि त्रुटि एन्कोडिंग विधि में गलती के कारण हुई थी। विधि थी
/// <summary>
/// Compress file data and then base64s the compressed data for safe transportation in XML.
/// </summary>
/// <returns>Base64 string of file chunk</returns>
private string GetFileChunk()
{
// MemoryStream for compression output
using (MemoryStream compressed = new MemoryStream())
{
using (GZipStream zip = new GZipStream(compressed, CompressionMode.Compress))
{
// read chunk from file
byte[] plaintext = new byte[this.readSize];
int read = this.file.Read(plaintext, 0, plaintext.Length);
// write chunk to compreesion
zip.Write(plaintext, 0, read);
plaintext = null;
// Base64 compressed data
return Convert.ToBase64String(compressed.ToArray());
}
}
}
वापसी की रेखा से नीचे संपीड़न धारा को बंद करने और फ्लश करने के लिए अनुमति का उपयोग कर, यह असंगत व्यवहार के कारण होता है जब धारा decompressing होना चाहिए।
/// <summary>
/// Compress file data and then base64s the compressed data for safe transportation in XML.
/// </summary>
/// <returns>Base64 string of file chunk</returns>
private string GetFileChunk()
{
// MemoryStream for compression output
using (MemoryStream compressed = new MemoryStream())
{
using (GZipStream zip = new GZipStream(compressed, CompressionMode.Compress))
{
// read chunk from file
byte[] plaintext = new byte[this.readSize];
int read = this.file.Read(plaintext, 0, plaintext.Length);
// write chunk to compreesion
zip.Write(plaintext, 0, read);
plaintext = null;
}
// Base64 compressed data
return Convert.ToBase64String(compressed.ToArray());
}
}
सभी की मदद के लिए धन्यवाद।
स्रोत
2010-08-10 15:06:43
पहली प्रति स्ट्रीम स्ट्रीम नहीं करती है; रीड विधि के साथ समान व्यवहार प्राप्त करें। GZipStream एक माइक्रोसॉफ्ट क्लास है कि वहां कक्षा में कोई त्रुटि नहीं है? –
हम्म आप 100% सुनिश्चित हैं। पढ़ना एक अलग बात है पूरी तरह से रीड विधि पर अनुबंध का कहना है कि अनुरोधित बाइट्स की मात्रा वापस करने की गारंटी नहीं है, लेकिन CopyTo दस्तावेज एक ही दावा नहीं करता है, लेकिन शायद यह आंतरिक रूप से रीड विधि का उपयोग करता है। क्या आपने स्ट्रीम पर उदाहरण के प्रति लूप एक्स में इसका उपयोग करने का प्रयास किया है। एमएसडीएन पेज पढ़ें http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx –
हां एक लूप से शुरू हुआ , रिटर्न 0 पढ़ने के लिए पहली कॉल, अंत तक वापसी बाइट पढ़ने के लिए बाद में कॉल। –