我下載了SevenZipSharp Lib以便壓縮一些文件。使用SevenZipSharp從內存壓縮文件,奇怪的錯誤
我用這個以壓縮文件:
var libPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "7-zip", "7z.dll");
SevenZip.SevenZipCompressor.SetLibraryPath(libPath);
SevenZip.SevenZipCompressor compressor = new SevenZipCompressor();
compressor.CompressFiles(@"C:\myTestFile.mdf", new string[] { @"C:\myTestFileCompressed.7z" });
有了這個,我的文件被壓縮whitout問題。我可以解壓縮它。現在
...我想壓縮相同的文件,但是,而不是直接壓縮文件,我想:
- 讀取文件中的字符串。是的,在一個字符串中,而不是在一個字節[]中。
-
- 將字符串轉換爲字節[] 將字節[]壓縮到另一個字節[]。
這裏是我的嘗試:
string strToCompress = File.ReadAllText(@"C:\myTestFile.mdf");
SevenZipCompressor compressor = new SevenZipCompressor();
byte[] byteArrayToCompress = Encoding.ASCII.GetBytes(text);
MemoryStream stream = new MemoryStream(byteArrayToCompress);
MemoryStream streamOut = new MemoryStream();
compressor.CompressStream(stream, streamOut);
string strcompressed = Encoding.ASCII.GetString(streamOut.ToArray());
File.WriteAllText(@"C:\myfileCompressed.7z",strcompressed);
我的問題很簡單:
如果我比較由這2種方法生產的規模,它的3 603 443字節與3 604 081字節。 另外,我不能解壓第二種方法產生的文件。
也許是因爲我使用了ASCII編碼,但是我壓縮的文件不是文本,而是一個二進制文件。
任何人都可以解釋我如何解決它嗎?我需要將我的文件讀取到一個字符串並壓縮它。 (我不想直接讀取文件到一個字節[])。
非常感謝,
最好的問候,
Nixeus