我將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