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); } } }
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); } } } }