private static void SetAttributes(string path, ArchiveEntry entry)
        {
            var setCreationTime   = entry.IsDirectory ? new Action <string, DateTime>(Directory.SetCreationTime) : new Action <string, DateTime>(File.SetCreationTime);
            var setLastWriteTime  = entry.IsDirectory ? new Action <string, DateTime>(Directory.SetLastWriteTime) : new Action <string, DateTime>(File.SetLastWriteTime);
            var setLastAccessTime = entry.IsDirectory ? new Action <string, DateTime>(Directory.SetLastAccessTime) : new Action <string, DateTime>(File.SetLastAccessTime);
            var setAttributes     = entry.IsDirectory ? new Action <string, FileAttributes>((dir, attr) => { new DirectoryInfo(dir).Attributes = attr; }) : new Action <string, FileAttributes>(File.SetAttributes);

            DateTime?creationTime   = entry.CreationTime ?? entry.LastWriteTime ?? entry.LastAccessTime;
            DateTime?lastWriteTime  = entry.LastWriteTime ?? entry.CreationTime ?? entry.LastAccessTime;
            DateTime?lastAccessTime = entry.LastAccessTime ?? entry.LastWriteTime ?? entry.CreationTime;

            if (creationTime.HasValue)
            {
                try { setCreationTime(path, creationTime.Value); }
                catch (Exception e) { Debug.Fail(e.Message); }
            }
            if (lastWriteTime.HasValue)
            {
                try { setLastWriteTime(path, lastWriteTime.Value); }
                catch (Exception e) { Debug.Fail(e.Message); }
            }
            if (lastAccessTime.HasValue)
            {
                try { setLastAccessTime(path, lastAccessTime.Value); }
                catch (Exception e) { Debug.Fail(e.Message); }
            }

            if (entry.Attributes.HasValue)
            {
                try { setAttributes(path, entry.Attributes.Value); }
                catch (Exception e) { Debug.Fail(e.Message); }
            }
        }
Exemple #2
0
 private static void SetAttributes(string path, ArchiveEntry entry)
 {
     if (entry.IsDirectory)
     {
         if (entry.CreationTime.HasValue)
         {
             try { Directory.SetCreationTime(path, entry.CreationTime.Value); }
             catch (Exception e) { Debug.Fail(e.Message); }
         }
         if (entry.LastAccessTime.HasValue)
         {
             try { Directory.SetLastAccessTime(path, entry.LastAccessTime.Value); }
             catch (Exception e) { Debug.Fail(e.Message); }
         }
         if (entry.LastWriteTime.HasValue)
         {
             try { Directory.SetLastWriteTime(path, entry.LastWriteTime.Value); }
             catch (Exception e) { Debug.Fail(e.Message); }
         }
         if (entry.Attributes.HasValue)
         {
             try { new DirectoryInfo(path).Attributes = entry.Attributes.Value; }
             catch (Exception e) { Debug.Fail(e.Message); }
         }
     }
     else
     {
         if (entry.CreationTime.HasValue)
         {
             try { File.SetCreationTime(path, entry.CreationTime.Value); }
             catch (Exception e) { Debug.Fail(e.Message); }
         }
         if (entry.LastAccessTime.HasValue)
         {
             try { File.SetLastAccessTime(path, entry.LastAccessTime.Value); }
             catch (Exception e) { Debug.Fail(e.Message); }
         }
         if (entry.LastWriteTime.HasValue)
         {
             try { File.SetLastWriteTime(path, entry.LastWriteTime.Value); }
             catch (Exception e) { Debug.Fail(e.Message); }
         }
         if (entry.Attributes.HasValue)
         {
             try { File.SetAttributes(path, entry.Attributes.Value); }
             catch (Exception e) { Debug.Fail(e.Message); }
         }
     }
 }