我有很多用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。我認爲你需要弄清楚壓縮文件中有哪些頭文件。 –