gpt4 book ai didi

c# - 如何在内存中创建zip文件?

转载 作者:行者123 更新时间:2023-12-02 07:54:17 30 4
gpt4 key购买 nike

我必须从一组网址创建一个 zip 文件。并且它应该具有正确的文件夹结构。所以我尝试像

   public async Task<byte[]> CreateZip(Guid ownerId)
{
try
{
string startPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "zipFolder");//base folder
if (Directory.Exists(startPath))
{
DeleteAllFiles(startPath);
Directory.Delete(startPath);
}
Directory.CreateDirectory(startPath);

string zipPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"{ownerId.ToString()}"); //folder based on ownerid
if (Directory.Exists(zipPath))
{
DeleteAllFiles(zipPath);
Directory.Delete(zipPath);
}

Directory.CreateDirectory(zipPath);
var attachemnts = await ReadByOwnerId(ownerId);

attachemnts.Data.ForEach(i =>
{
var fileLocalPath = $"{startPath}\\{i.Category}";
if (!Directory.Exists(fileLocalPath))
{
Directory.CreateDirectory(fileLocalPath);
}
using (var client = new WebClient())
{
client.DownloadFile(i.Url, $"{fileLocalPath}//{i.Flags ?? ""}_{i.FileName}");
}
});
var zipFilename = $"{zipPath}//result.zip";

if (File.Exists(zipFilename))
{
File.Delete(zipFilename);
}

ZipFile.CreateFromDirectory(startPath, zipFilename, CompressionLevel.Fastest, true);


var result = System.IO.File.ReadAllBytes(zipFilename);
return result;
}
catch (Exception ex)
{
var a = ex;
return null;
}
}

目前我正在将所有文件写入我的基本目录中(可能不是一个好主意)。目前我必须手动删除所有文件夹和文件以避免异常/不需要的文件。一切都可以写入内存吗?

将所有文件和文件夹结构写入内存需要进行哪些更改?

最佳答案

不,你不能。无论如何,内置的 Dotnet 都不会。

enter image description here

根据我的评论,我建议将文件存储在基于 Guid 或类似内容的自定义位置。例如:

“/xxxx-xxxx-xxxx-xxxx/文件夹到Zip/....”。

这将确保您可以处理具有相同文件或相似文件/文件夹名称的多个请求。

然后您只需稍后再次清理并删除该文件夹,这样就不会耗尽空间。

关于c# - 如何在内存中创建zip文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59527841/

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