我们如何跟踪azure文件存储文件夹是否已更新?

时间:2018-08-27 08:09:56

标签: c# azure azure-storage file-storage

我有azure文件存储,其中包含其他文件夹。 我想检查或跟踪该文件夹的最新更新时间?

我已经完成了一个简单的控制台应用程序,可以从该位置获取所有文件-

        // Get list of all files/directories on the file share 
        CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["storageConnectionString"]);
        CloudFileClient fileClient = cloudStorageAccount.CreateCloudFileClient();
        CloudFileShare fileShare = fileClient.GetShareReference(ConfigurationManager.AppSettings["shareName"]);

        var sourceName = fileShare.GetRootDirectoryReference().GetDirectoryReference((ConfigurationManager.AppSettings["sourceName"]));
        IEnumerable<IListFileItem> fileList = sourceName.ListFilesAndDirectories();

        CloudFileDirectory destinationDir = fileShare.GetRootDirectoryReference().GetDirectoryReference((ConfigurationManager.AppSettings["destinationName"]));

        foreach (IListFileItem listItem in fileList)
        {
         // gives me all file records 
        }

我试图这样得到它,但是它是null。             var test = sourceName.Properties.LastModified;

由于为空,我无法使用此查询:(

 var latest= fileShare.GetRootDirectoryReference().ListFilesAndDirectories()
    .OfType<CloudFileShare>()
    .OrderByDescending(m => m.Properties.LastModified)
    .ToList()
    .First();
  

我刚刚注意到,我刚刚将一个新文件上传到该文件夹​​中,但是LastModified仍然是旧日期,这意味着LastModified与该文件夹和文件是分开的:现在该怎么办?

     

我想检查是否在24小时内将任何新文件更新到主文件夹的子文件夹中。

我想知道如何检查该源文件夹中的最新更新文件日期时间吗?

为什么LastModified为null?

1 个答案:

答案 0 :(得分:1)

  

要访问retrieve property values,请在Blob或容器上调用FetchAttributesAsync方法以填充属性,然后读取值。

运行控制台应用程序时,它实际上会创建CloudFileShare对象的新实例,并且其属性将初始化为默认值。您需要为此调用FetchAttributes方法以填充属性。

此外,当您列出文件的属性时,也将提取文件的属性,因此您无需创建CloudFileShare的新实例。您可以参考此thread

您可以在获取属性之前使用 sourceName.FetchAttributes(); 。我对其进行了测试,并且效果很好。请参考以下代码:

CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["storageConnectionString"]);
CloudFileClient fileClient = cloudStorageAccount.CreateCloudFileClient();
CloudFileShare fileShare = fileClient.GetShareReference(ConfigurationManager.AppSettings["shareName"]);
var sourceName = fileShare.GetRootDirectoryReference().GetDirectoryReference((ConfigurationManager.AppSettings["sourceName"]));
sourceName.FetchAttributes();
var test = sourceName.Properties.LastModified;