我将zip文件转换为byte []并将其写入文本文件中。将Zip文件转换为byte []和byte []以压缩文件
int BufferSize=65536;
private void button1_Click(object sender, EventArgs e)
{
DialogResult re = openFileDialog1.ShowDialog();
if (re == DialogResult.OK)
{
string fileName = openFileDialog1.FileName;
try
{
byte[] bytes = File.ReadAllBytes(fileName);
File.WriteAllBytes(@"F:\Info.txt", bytes);
}
catch (Exception) { }
}
}
然后我尝试将这些字节转换为zip文件。但我做不到。
我的代码是在这里:
private void button2_Click(object sender, EventArgs e)
{
DialogResult re = openFileDialog1.ShowDialog();
if (re == DialogResult.OK)
{
string fileName = openFileDialog1.FileName;
try
{
byte[] bytes = File.ReadAllBytes(fileName);
using (var mstrim = new MemoryStream(bytes))
{
using (var inStream = new GZipStream(mstrim, CompressionMode.Compress))
{
using (var outStream = File.Create("Tax.Zip"))
{
var buffer = new byte[BufferSize];
int readBytes;
while ((readBytes = inStream.Read(buffer, 0, BufferSize)) != 0)
{
outStream.Write(buffer, 0, readBytes);
}
}
}
}
}
catch (Exception) { }
}
}
Error:File Mode not valid.
这种缩进风格确实没有帮助。按下Ctrl-K,D。 – usr
其实你必须解压缩zip文件。从压缩文件读取字节不会给你已经压缩在文件内的实际数据。 这就是为什么你不能从你刚刚阅读的字节重新创建zip文件。 – Rezoan
使用DotNetZIP:https://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=示例 与您相比,您可以在比Gzip更少的时间和精力内完成更多的工作。 :) – Rezoan