public async Task <IEnumerable <TimeBlob> > ListTimeBlobsAsync(DateDirectory directory)
        {
            var blobs = await directory.Directory.ListBlobsSegmentedAsync(false, BlobListingDetails.None, null, null, null, null);

            var result = new List <TimeBlob>();

            foreach (var blob in blobs.Results.OfType <CloudBlockBlob>())
            {
                var timePart = blob.Name.Split('/').LastOrDefault()?.Split('-').FirstOrDefault();
                if (TimeSpan.TryParseExact(timePart, TimeFormat, CultureInfo.InvariantCulture, TimeSpanStyles.None,
                                           out var time))
                {
                    result.Add(new TimeBlob(blob, new DateTimeOffset(directory.Date.Add(time), TimeSpan.Zero)));
                }
            }

            return(result);
        }
示例#2
0
        static void Main(string[] args)
        {
            string path;

            if (args.Length > 0)
            {
                path = args[0];
            }
            else
            {
                path = Directory.GetCurrentDirectory();
            }

            try
            {
                DateDirectory dir = new DateDirectory(path, "*.*");

                Console.WriteLine("{0,-19}\t{1,-19}\t{2,-19}\t{3}",
                                  "Created", "Accessed", "Modified", "Filename"
                                  );

                foreach (var f in dir.Files)
                {
                    Console.WriteLine("{0,-15}\t{1,-15}\t{2,-15}\t{3}",
                                      f.DateCreated, f.DateAccessed, f.DateModified, f.Filename
                                      );
                }
            }

            catch (System.IO.DirectoryNotFoundException)
            {
                Console.WriteLine(Messages.getText(Messages.ERR_FILE_NOT_FOUND,
                                                   new object[] { path }));
            }

            // Console.WriteLine("Press key");
            // Console.ReadLine();
        }
示例#3
0
        static void setAttributes(ArgsData argd)
        {
            if (argd.ValueArgs.Count != 3)
            {
                msg(Messages.getText(Messages.ERR_ARG_WRONG_NUMBER, new object[] { "Use: <dirpath> <filemask> <datetime> -set=<attributes> Optional: -offset=<offset>" }));
                return;
            }

            string path = argd.ValueArgs[0].Value;
            string mask = argd.ValueArgs[1].Value;

            DateTime newDate;
            bool     dateIsOk = DateTime.TryParse(argd.ValueArgs[2].Value, out newDate);

            if (dateIsOk)
            {
                try
                {
                    DateDirectory dr = new DateDirectory(path, mask);

                    dr.SetDate = newDate;

                    #region set parameter
                    if (argd.NamedArgs.ContainsKey("set"))
                    {
                        string atts = argd.NamedArgs["set"].Value;

                        // only allowed characters
                        if (atts.All(c => "acm".Contains(c)))
                        {
                            if (atts.Contains("a"))
                            {
                                dr.SetDateAccessed = true;
                            }

                            if (atts.Contains("c"))
                            {
                                dr.SetDateCreated = true;
                            }

                            if (atts.Contains("m"))
                            {
                                dr.SetDateModified = true;
                            }
                        }
                        else
                        {
                            msg(Messages.getText(Messages.ERR_ARG_INVALID_VALUE, new object[] { "-set",
                                                                                                "Allowed values: acm" }));
                            return;
                        }
                        #endregion

                        #region offset parameter

                        if (argd.NamedArgs.ContainsKey("offset"))
                        {
                            try {
                                dr.SetOffset = argd.NamedArgs["offset"].Value;
                            }

                            catch (ArgumentException exc)
                            {
                                msg(Messages.getText(Messages.ERR_ARG_INVALID_VALUE, new object[] { "-offset",
                                                                                                    "Examples: +5s -10h +3M -1Y" }));
                                return;
                            }
                        }
                        #endregion

                        dr.WriteDateAttributes(true);
                    }
                    else
                    {
                        msg(Messages.getText(Messages.ERR_ARG_IS_MANDATORY, new object[] { "-set",
                                                                                           "Allowed values: acm" }));
                    }
                }

                catch (System.IO.FileNotFoundException exc)
                {
                    msg(Messages.getText(Messages.ERR_FILE_NOT_FOUND, new object[] { path }));
                }
            }
        }