我有很多用Delphi编写的应用程序制作的文件,我想在C#应用程序中打开。我正在写作。用c#打开Delphi ZLib压缩数据#
解包文件的“老”德尔福代码:
InputStream := TFileStream.Create(InputFileName, fmOpenRead);
OutputStream := TMemoryObjStream.Create;
DecompressionStream := TZDecompressionStream.Create(InputStream);
OutputStream.CopyFrom(DecompressionStream, 0);
这是我用在C#中打开这些文件中的代码:
FS = new System.IO.FileStream(File, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Read);
System.IO.MemoryStream MS = new System.IO.MemoryStream();
ZLibNet.ZLibStream ZS = new ZLibNet.ZLibStream(S, ZLibNet.CompressionMode.Decompress);
ZS.CopyTo(MS);
ZS.Close();
FS.close();
如果我现在开始阅读“MS流”与二进制阅读器 我得到了一些奇怪的数据在前24个字节,然后我得到的值似乎是合乎逻辑的。
首先它应该读取一个Int32,它具有合理的价值。 之后,一个字符串,这个字符串显示为“\ 0 \ 0 \ 0ISua”,我期待“ISuarez”。但是如果我将流位置进一步移动一个字节,我会得到“Suarez \ n \ 0 \ 0 \ 0”
这让我想知道我是否可能会稍后开始读取流而不是字节,但如何执行此操作?
这是zlib而不是ZIP。我认为你需要弄清楚压缩文件中有哪些头文件。 –