我正在尝试为Moded Minecraft做我自己的Minecraft Launcher。我有一个问题:我需要将一个* .jar文件的内容提取到另一个。我尝试了很多东西,我非常绝望。
基本上,我需要在代码中执行this。
答案 0 :(得分:2)
正如Andrew简要提到的那样,有一些很好的.NET库来处理zip文件。我发现DotNetZip非常有用,并且有很多有用的实例here。
在回答您的问题时,如果您只想将一个* .jar文件的内容复制到另一个文件,将原始内容保留在目标文件中,请尝试以下操作。我正在使用上面提到的.NET zip(也有一个NuGet包!):
using (ZipFile sourceZipFile = ZipFile.Read("zip1.jar"))
using (ZipFile targetZipFile = ZipFile.Read("zip2.jar"))
{
foreach (var zipItem in sourceZipFile)
{
if (!targetZipFile.ContainsEntry(zipItem.FileName))
{
using (Stream stream = new MemoryStream())
{
// Write the contents of this zip item to a stream
zipItem.Extract(stream);
stream.Position = 0;
// Now use the contents of this stream to write to the target file
targetZipFile.AddEntry(zipItem.FileName, stream);
// Save the target file. We need to do this each time before we close
// the stream
targetZipFile.Save();
}
}
}
}
希望这有帮助!