How do we track azure file storage folder is updated or not?

╄→гoц情女王★ 提交于 2019-12-07 18:25:19

问题


I have azure file storage with other folders inside it. I want to check or track when that folder is last updated ?

I have done a simple console application to get all files from that location -

        // 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 
        }

I tried to get it like this but it is null. var test = sourceName.Properties.LastModified;

because of null i can not able to use this query :(

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

i just noticed that , i have uploaded one new file just now into that folder but still LastModified is old date , it means LastModified is separate for that folder and file :O what to do now ?

I want to check whether any new file is updated into any sub-fodler of main folder or not within 24hr.

I wonder how to I check the last updated file datetime from that source folder ?

why LastModified is null ?


回答1:


To retrieve property values, call the FetchAttributesAsync method on your blob or container to populate the properties, then read the values.

When you run your console app, it essentially creates a new instance of CloudFileShare object and its properties are initialized to the default value. You would need to call FetchAttributes method on this to fill the properties.

Also, when you list the file's the properties of the file are fetched as well, you will not need to create a new instance of CloudFileShare. You could refer to this thread.

You could use sourceName.FetchAttributes(); before retrieve property. I test it and it works fine. Please refer to the code as below:

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;


来源:https://stackoverflow.com/questions/52035111/how-do-we-track-azure-file-storage-folder-is-updated-or-not

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!