【发布时间】:2022-11-04 00:40:06
【问题描述】:
我们使用 Azure 文件共享(文件共享,不是 GPV2,这意味着我们不使用 blob 或队列,只是文件共享)来存储我们的文件。
我们需要检查文件路径列表是否存在。
ShareFileClient.ExistsAsync 是否有“批量”版本?
否则最好的解决方法是什么?
我们尝试在每个路径上调用Exists,每个调用都在它自己的任务中,但是返回时间太长(对于 250 条路径,大约需要 25 秒):
var tasks = paths.AsParallel().Select(p => Task.Run(() =>
{
// share is a captured variable of type ShareClient
var dir = share.GetDirectoryClient(GetDirName(p));
var file = dir.GetFileClient(GetFileName(p));
var result = file.Exists();
return result.Value;
}));
【问题讨论】:
-
2 个问题 - 1) 目录中有多少个文件? 2 - 您要检查的文件是否遵循一些命名模式,例如所有文件都以一组共同的字符开头?
-
@GauravMantri 1)文件共享中有8个目录,每个目录都有子目录......等等。叶目录每个包含大约 20 个文件。 2)不是真的。有一些文件以一组常见的字符开头,但没有可能的逻辑来定位它们。
-
谢谢。从上面的代码中,您似乎想要检查特定目录中的文件是否存在,而不是该目录及其子目录中。那是对的吗?
-
@GauravMantri 是正确的。
-
谢谢。发布了答案。 HTH。
标签: azure azure-cloud-services azure-file-share