我下载了 SevenZipSharp Lib 以压缩一些文件。
我用它来压缩文件:
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" });
有了这个,我的文件被压缩了,没有问题。我可以解压。
现在...我想压缩同一个文件,但是,我不想直接压缩文件,而是:
- 以字符串形式读取文件。是的,在字符串中,而不是在字节 [] 中。
- 将我的字符串转换为 byte[] 将 byte[] 压缩为另一个 byte[]。
这是我的尝试:
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);
我的问题很简单:
如果我比较这两种方法产生的大小,它是 3 603 443 字节与 3 604 081 字节。另外,我无法解压缩第二种方法生成的文件。
也许是因为我使用了 ASCII 编码,但我要压缩的文件不是文本,而是二进制文件。
任何人都可以解释一下如何解决它吗?我需要将我的文件读入一个字符串并压缩它。(我不想将文件直接读取到字节 [])。
非常感谢,
此致,
尼克修斯