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

C#-将一个*.jar文件解压缩到另一个文件中,c#,jar,extraction,C#,Jar,Extraction,我正试着为我自己的老式雷击机做一个雷击机发射器。我有一个问题:我需要将一个*.jar文件的内容提取到另一个。我尝试了很多东西,我完全绝望了 基本上,我需要在代码中完成 如前所述,有一些很好的.NET库用于处理zip文件。我发现它非常有用,并且有很多有用的示例 在回答您的问题时,如果您只想将一个*.jar文件的内容复制到另一个*.jar文件,并将原始内容保留在目标文件中,请尝试以下操作。我正在使用上面提到的.NET zip(它还有一个NuGet包!): 希望这有帮助 jar文件是具有不同扩展名的z

我正试着为我自己的老式雷击机做一个雷击机发射器。我有一个问题:我需要将一个*.jar文件的内容提取到另一个。我尝试了很多东西,我完全绝望了

基本上,我需要在代码中完成

如前所述,有一些很好的.NET库用于处理zip文件。我发现它非常有用,并且有很多有用的示例

在回答您的问题时,如果您只想将一个*.jar文件的内容复制到另一个*.jar文件,并将原始内容保留在目标文件中,请尝试以下操作。我正在使用上面提到的.NET zip(它还有一个NuGet包!):


希望这有帮助

jar文件是具有不同扩展名的zip归档文件。你的问题很模糊,但我猜你想要jar文件的内容。您是否尝试过使用任何外部或部分.NET framework的zip库?您提到您已经尝试了很多东西。你能提供详细信息吗?根据你需要执行的文件操作的程度,有比代码更简单的方法。如果您只需要重新打包归档文件,只需将其放在主可执行文件旁边并调用它就更容易了。如果您想在代码中实现它,那么在.NET4.5(或者可能来自4.0?)中,对zip的支持足够好,无需额外的库即可实现。
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();
                    }
                }
            }
        }