如何将文件添加到 .NET Core 中 zip 内的文件夹中?

Posted

技术标签:

【中文标题】如何将文件添加到 .NET Core 中 zip 内的文件夹中?【英文标题】:How to add a file to a folder inside a zip in .NET Core? 【发布时间】:2017-04-03 08:22:52 【问题描述】:

我需要从一个文件夹中读取一个文件并将其放置在 .NET core 中的一个 zip 文件夹中。

我搜索了这个并找到了Adding files into a folder inside a zip file in c#,但这对我不起作用。

我的压缩文件代码是:

using (var fs = new FileStream("Test.zip", FileMode.Create))
using (var zip = new ZipArchive(fs, ZipArchiveMode.Create))

    zip.CreateEntry("Folder1 /"); 
// working till here, Creates a zip and then creates Folder 1 inside Test.zip`

但我需要从“C:\Files”中读取一个文件并将其放在“Folder1”中。该文件被添加到 zip 但不在“Folder1”中。

【问题讨论】:

你遇到了什么错误? 我没有遇到任何错误。我尝试使用zip.CreateEntryFromFile(SourceFilePath,"FileName",CompressionLevel.Optimal); 但这是在 test.zip 中创建条目。但我需要将此条目添加到“Test.zip/Folder1”。 您能否分享您在 Folder1 中添加条目的代码 var zipPath = configuration.GetValue<string>(Constant.AppSettings.FileDownloadLocation); var fileToReadPath = configuration.GetValue<string>(Constant.AppSettings.TestFileLocation); using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update)) archive.CreateEntryFromFile(fileToReadPath, "NewEntry", CompressionLevel.Fastest); 我尝试过这样做 你在 fileToReadPath 中传递的路径 【参考方案1】:

这段代码似乎可以解决问题:

using System.IO;
using System.IO.Compression;

class Program

    static void Main(string[] args)
    
        string sourceFileName = "MyFile.txt";
        string sourceFolder = @"C:\Files";
        string zipFilePath = Path.Combine(@"C:\Files", "Test.zip");

        using (ZipArchive archive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create))
        
            archive.CreateEntryFromFile(Path.Combine(sourceFolder, sourceFileName), $"Folder1\\sourceFileName");
        
    

【讨论】:

以上是关于如何将文件添加到 .NET Core 中 zip 内的文件夹中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .net core Web API 项目添加到现有的 .NET core (3.1) Web Application 项目中?

如何在 ASP.net Core 中添加 js 和 css 文件?

如何在.net core mvc c#中提取格式.gz/.zip/.rar/.tar.gz

将 .targets 文件添加到 .NET 框架 nuget 不会在 .Net Core 项目中正确导入

.NET Core 2 - 将文件夹复制到

D:如何将文件添加到 zip 存档中?