C# - 将一个* .jar文件解压缩到另一个文件中

时间:2014-01-02 18:23:56

标签: c# jar extraction

我正在尝试为Moded Minecraft做我自己的Minecraft Launcher。我有一个问题:我需要将一个* .jar文件的内容提取到另一个。我尝试了很多东西,我非常绝望。

基本上,我需要在代码中执行this

1 个答案:

答案 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();
                    }
                }
            }
        }

希望这有帮助!