假设我每天在blob存储中生成几个json
文件,我想做的是在我的任何目录中得到最新修改的文件,所以我在blob中会有这样的内容:
2016/01/02/test.json
2016/01/02/test2.json
2016/02/03/test.json
我想得到2016/02/03/test.json
。所以一种方法是得到文件的完整路径,然后做一个regex检查来找到最新创建的目录,但是如果我在每个目录中有多个josn
文件,这就不起作用了。有没有像File.GetLastWriteTime
这样的东西来得到最新修改的文件?我正在使用这些代码来得到所有的文件btw:
public static CloudBlobContainer GetBlobContainer(string accountName, string accountKey, string containerName)
{
CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
// blob client
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// container
CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName);
return blobContainer;
}
public static IEnumerable<IListBlobItem> GetBlobItems(CloudBlobContainer container)
{
IEnumerable<IListBlobItem> items = container.ListBlobs(useFlatBlobListing: true);
return items;
}
public static List<string> GetAllBlobFiles(IEnumerable<IListBlobItem> blobs)
{
var listOfFileNames = new List<string>();
foreach (var blob in blobs)
{
var blobFileName = blob.Uri.Segments.Last();
listOfFileNames.Add(blobFileName);
}
return listOfFileNames;
}
8条答案
按热度按时间nle07wnf1#
每个IListBlobItem都将是一个云块Blob、一个云页面Blob或一个云块目录。
在转换为块或页面blob或它们的共享基类
CloudBlob
(最好使用as
关键字并检查是否为null)之后,您可以通过blockBlob.Properties.LastModified
访问修改的日期。请注意,您的实现将执行O(n)扫描容器中的所有blob,如果有数十万个文件,这可能需要一段时间。尽管目前没有更有效的查询blob存储的方法,(除非您滥用了文件命名,并对日期进行了编码,使较新的日期按字母顺序排在最前面)。我建议您在手边准备一个数据库表,该表将所有文件列表表示为行,其中包含索引的DateModified列作为搜索依据,以及包含blob路径的列用于轻松访问文件。
UPDATE(2022)看起来微软现在提供了customizable Blob Index Tags。这应该允许在blob元数据上添加一个自定义的DateModified属性或类似的属性,并对blob执行高效的“大于”/“小于”查询,而 * 不 * 需要一个单独的数据库。(注意:它显然只支持字符串值,因此对于日期值,您需要确保将其保存为可按字典排序的格式,如“yyyy-MM-dd”。)
7tofc5zh2#
正如亚尔所说,您可以使用单个blob对象的
LastModified
属性。下面的代码片段演示了如何在引用正确的容器后执行此操作:注意:blob类型不能为
<CloudBlockBlob>
。请确保在必要时进行更改。t2a7ltrp3#
rhfm7lfc4#
使用Azure Web Jobs SDK。SDK具有监视新的/更新的BLOB的选项。
rnmwe5a25#
对于新的V12 Nuget包,前面的答案已经过时了。
新的nuget包是Azure.Storage. Blob,我使用的是版本12.8.4
下面的代码将得到你的最后修改日期。你也可以写这个代码的异步版本。
vawmfj5a6#
如果出现问题,请使用
blockBlob.Container.Properties.LastModified
yduiuuwa7#
使用Microsoft.Azure.Storage.Blob,您可以得到如下结果:
给定存储帐户的上述代码:
Created
和LastModified
与blob名称保存在csv文件中(名称类似于容器)ngynwnxp8#
使用rollsch和hbd的方法,我能够生成如下所示的最新图像
我也在使用这些方法https://www.youtube.com/watch?v=B_yDG35lb5I&t=1864s