我有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?
答案 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;