【发布时间】:2019-11-22 23:49:15
【问题描述】:
我的应用程序需要从 Google 云存储桶下载文件。
我正在使用 StorageClient ListObjects 方法从 GCS 存储桶下载文件。
在ListObjects 我想提供正则表达式格式的文件名。
目前我正在使用以下代码。
var listFiles = storageClientVariable.ListObjects(GCSBucketName,
folderPrefix).Where(p => Regex.IsMatch(p.Name, regexFileName));
foreach (var objectName in listFiles)
{
bucketFileName = Path.GetFileName(objectName.Name);
guidFolderPath = localPath + "\\" + bucketFileName;
FileStream fs = new FileStream(guidFolderPath, FileMode.Create);
using (fs)
{
var progress = new Progress<IDownloadProgress>(
p => { DownloadProgress(p); });
storage.DownloadObject(GCSBucketName, objectName.Name, fs, option, progress);
}
}
break;
此代码运行良好。但是我在 Enumerable.Where 方法中传递了 regexFileName。它循环遍历存储桶中存在的所有文件。那么有没有其他方法可以避免额外的循环?或者有没有更好的方法使用 c# 代码从 GCS 存储桶下载文件?
【问题讨论】:
-
在您看来还有什么“更好”的地方?该代码看起来可以工作,还是您收到任何错误消息?
-
@digijay 此代码工作正常。但是我在 Enumerable.Where 方法中传递了 regexFileName。它循环遍历存储桶中存在的所有文件。那么有没有其他方法可以避免额外的循环?
-
啊,好吧,这更清楚了,虽然我不知道更好的方法来解决这个问题。您可能应该将该评论直接添加到问题中(使用编辑按钮)以供其他阅读此问题的人使用,这样它会更加清晰(和相关性)。 欢迎来到 StackOverflow!
-
我建议删除double post,这里的人不赞成这个:-)