Как мы проследим, чтобы папка хранилища файлов Azure обновлялась или нет? - PullRequest
0 голосов
/ 27 августа 2018

У меня есть хранилище файлов 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 является отдельным для этой папки и файла: O что теперь делать?

Я хочу проверить, обновляется ли какой-либо новый файл в какой-либо подпапке основной папки или нет в течение 24 часов.

Интересно, как проверить дату и время последнего обновления файла из этой исходной папки?

почему LastModified имеет значение null?

1 Ответ

0 голосов
/ 27 августа 2018

Чтобы получить значения свойств , вызовите метод FetchAttributesAsync для своего большого двоичного объекта или контейнера, чтобы заполнить свойства, а затем прочитайте значения.

Когда вы запускаете консольное приложение, оно по существу создает новый экземпляр объекта CloudFileShare, и его свойства инициализируются значением по умолчанию. Вам нужно вызвать метод FetchAttributes для этого, чтобы заполнить свойства.

Кроме того, когда вы перечисляете файл, свойства файла также выбираются, вам не нужно будет создавать новый экземпляр CloudFileShare. Вы можете обратиться к этой теме .

Вы можете использовать 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;
...