gpt4 book ai didi

c# - 如何在 C# 中解压 .bz2 文件?

转载 作者:行者123 更新时间:2023-12-03 21:50:08 24 4
gpt4 key购买 nike

我正在开发 wpf 应用程序。我正在使用 sharpziplib 来压缩和解压缩文件。我可以使用以下代码轻松解压缩 .zip 文件

public static void UnZip(string SrcFile, string DstFile, string safeFileName, int bufferSize)
{
//ICSharpCode.SharpZipLib.Zip.UseZip64.Off;

FileStream fileStreamIn = new FileStream(SrcFile, FileMode.Open, FileAccess.Read);
ZipInputStream zipInStream = new ZipInputStream(fileStreamIn);


string rootDirectory = string.Empty;
if (safeFileName.Contains(".zip"))
{
rootDirectory = safeFileName.Replace(".zip", string.Empty);
}
else
{
rootDirectory = safeFileName;
}

Directory.CreateDirectory(App.ApplicationPath + rootDirectory);

while (true)
{
ZipEntry entry = zipInStream.GetNextEntry();

if (entry == null)
break;

if (entry.Name.Contains("/"))
{
string[] folders = entry.Name.Split('/');

string lastElement = folders[folders.Length - 1];
var folderList = new List<string>(folders);
folderList.RemoveAt(folders.Length - 1);
folders = folderList.ToArray();

string folderPath = "";
foreach (string str in folders)
{
folderPath = folderPath + "/" + str;
if (!Directory.Exists(App.ApplicationPath + rootDirectory + "/" + folderPath))
{
Directory.CreateDirectory(App.ApplicationPath + rootDirectory + "/" + folderPath);
}
}

if (!string.IsNullOrEmpty(lastElement))
{
folderPath = folderPath + "/" + lastElement;
WriteToFile(DstFile + rootDirectory + @"\" + folderPath, bufferSize, zipInStream, rootDirectory, entry);
}

}
else
{
WriteToFile(DstFile + rootDirectory + @"\" + entry.Name, bufferSize, zipInStream, rootDirectory, entry);
}
}

zipInStream.Close();
fileStreamIn.Close();
}

private static void WriteToFile(string DstFile, int bufferSize, ZipInputStream zipInStream, string rootDirectory, ZipEntry entry)
{
FileStream fileStreamOut = new FileStream(DstFile, FileMode.OpenOrCreate, FileAccess.Write);
int size;
byte[] buffer = new byte[bufferSize];

do
{
size = zipInStream.Read(buffer, 0, buffer.Length);
fileStreamOut.Write(buffer, 0, size);
} while (size > 0);

fileStreamOut.Close();
}

但是相同的代码不适用于 .bz2 文件。它在行中给出错误

ZipEntry entry = zipInStream.GetNextEntry();

错误是 - 错误的本地 header 签名:0x26594131。我应该如何解压缩.bz2 文件?您能否提供我可以解决上述问题的任何代码或链接?

最佳答案

当您对 .zip 文件使用 ZipInputStream 时,您应该对 .bz2 文件使用 BZip2InputStream (以及用于 .gz 文件等的 GZipInputStream)。

关于c# - 如何在 C# 中解压 .bz2 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com