如何在含多级子目录的Data.zip中找出最新时间的文件
修改C#代码以输出Zip中最后修改时间最晚的目标文件
需求说明
下游系统每日会在Data文件夹下创建数据文件夹,文件逐步生成在子文件夹TS中,最终打包为Data.zip上传至Azure Blob。现有代码可打印Zip内名称以XXX_TS_开头的所有文件名,需修改为仅输出其中LastWriteTime最晚的文件。
修改后的代码
var blobClient = new BlobClient("conn-string", "upload", "Data.zip"); await DownloadFromStream(blobClient); public static async Task DownloadFromStream(BlobClient blobClient) { var stream = await blobClient.OpenReadAsync(new BlobOpenReadOptions(false)); using ZipArchive archive = new ZipArchive(stream); // 过滤目标文件并获取最晚修改的条目 var latestEntry = archive.Entries .Where(entry => entry.Name.StartsWith("XXX_TS_")) .OrderByDescending(entry => entry.LastWriteTime) .FirstOrDefault(); if (latestEntry != null) { Console.WriteLine($"最晚修改的文件:{latestEntry.Name}"); Console.WriteLine($"最后修改时间:{latestEntry.LastWriteTime}"); } else { Console.WriteLine("未找到名称以XXX_TS_开头的文件"); } }
改动说明
- 移除原代码中计数和遍历打印的冗余逻辑
- 用
Where筛选出所有名称符合规则的Zip条目 - 通过
OrderByDescending按最后修改时间降序排序,再用FirstOrDefault直接获取最晚修改的文件 - 增加空值判断,避免无符合条件文件时出现异常
内容的提问来源于stack exchange,提问作者user584018
相关产品推荐
相关产品推荐

