/// <summary> /// Initializes a new instance of the LocalDirectoryReferenceInfo class. /// </summary> /// <param name="directory">The directory instance.</param> /// <param name="parent">The parent folder.</param> public LocalDirectoryReferenceInfo(DirectoryInfo directory, LocalDirectoryReferenceInfo parent = null) : base(directory) { this.parent = parent; if (directory == null) { return; } try { Creation = directory.CreationTime; } catch (IOException) { } catch (NotSupportedException) { } catch (InvalidOperationException) { } catch (UnauthorizedAccessException) { } catch (SecurityException) { } catch (ExternalException) { } }
/// <summary> /// Tests if supports the directory reference. /// </summary> /// <param name="directory">The directory to load sub-directories or files.</param> /// <returns>true if supports; otherwise, false.</returns> bool IFileReferenceClient.Test(IFileContainerReferenceInfo directory) { if (directory is not T info) { return(false); } return(Test(info)); }
/// <summary> /// Gets the parent. /// </summary> /// <param name="directory">The directory to get parent.</param> /// <return>The parent information; or null, if no parent.</return> async Task <IFileContainerReferenceInfo> IFileReferenceClient.GetParentAsync(IFileContainerReferenceInfo directory) { if (directory is not T info) { return(null); } return(await GetParentAsync(info)); }
/// <summary> /// Initializes a new instance of the ZipArchiveEntryReferenceInfo class. /// </summary> /// <param name="file">The file item.</param> /// <param name="parent">The parent folder.</param> internal ZipArchiveEntryReferenceInfo(ZipArchiveEntry file, IFileContainerReferenceInfo parent) : base(parent, file) { Name = file.Name; Exists = true; LastModification = file.LastWriteTime.DateTime; Size = file.Length; CompressedSize = file.CompressedLength; #if !NETSTANDARD Crc32 = file.Crc32; #endif }
internal static Task <IReadOnlyList <IFileReferenceInfo> > GetFilesAsync(DirectoryInfo dir, LocalDirectoryReferenceInfo parent) { if (dir == null) { return(Task.FromResult <IReadOnlyList <IFileReferenceInfo> >(new List <IFileReferenceInfo>())); } if (parent == null) { parent = new LocalDirectoryReferenceInfo(dir); } var col = dir.EnumerateFiles()?.Where(ele => !ele.Attributes.HasFlag(FileAttributes.Hidden))?.Select(ele => CreateFileReferenceInfo(ele, parent) as IFileReferenceInfo)?.ToList() ?? new List <IFileReferenceInfo>(); return(Task.FromResult <IReadOnlyList <IFileReferenceInfo> >(col)); }
/// <summary> /// Refreshes the state of the object. /// </summary> public void Refresh() { var source = Source; if (source == null) { return; } try { source.Refresh(); Name = source.Name; Creation = source.CreationTime; LastModification = source.LastWriteTime; if (GetParent().Source != Source.Parent) { parent = null; GetParent(); } } catch (IOException) { } catch (NotSupportedException) { } catch (InvalidOperationException) { } catch (UnauthorizedAccessException) { } catch (SecurityException) { } catch (ExternalException) { } }
/// <summary> /// Gets the parent. /// </summary> private IFileContainerReferenceInfo GetParentInternal() { if (parent != null) { return(parent); } try { var dir = Source.Parent; if (dir == null || !dir.Exists) { return(null); } parent = new LocalDirectoryReferenceInfo(dir); } catch (IOException) { } catch (NotSupportedException) { } catch (InvalidOperationException) { } catch (UnauthorizedAccessException) { } catch (SecurityException) { } catch (ExternalException) { } return(parent); }
/// <summary> /// Sets the parent. /// </summary> /// <param name="info">The parent.</param> protected virtual void SetParent(IFileContainerReferenceInfo info) => parent = info;
/// <summary> /// Initializes a new instance of the BaseFileReferenceInfo class. /// </summary> /// <param name="parent">The parent directory.</param> /// <param name="source">The instance source for reference.</param> protected BaseFileReferenceInfo(IFileContainerReferenceInfo parent, object source) : base(source) { SetParent(parent); }
/// <summary> /// Initializes a new instance of the LocalDirectoryReferenceInfo class. /// </summary> /// <param name="directory">The directory instance.</param> /// <param name="parent">The parent folder.</param> public LocalDirectoryReferenceInfo(DirectoryInfo directory, LocalPackageFileReferenceInfo parent) : base(directory) { this.parent = parent; }
/// <summary> /// Lists all files. /// </summary> /// <param name="directory">The directory to load sub-directories or files.</param> /// <returns>The file collection.</returns> async Task <IReadOnlyList <IFileReferenceInfo> > IFileReferenceClient.GetFilesAsync(IFileContainerReferenceInfo directory) { if (directory is not T info) { return(new List <IFileReferenceInfo>()); } return(await GetFilesAsync(info) ?? new List <IFileReferenceInfo>()); }
/// <summary> /// Lists all sub-directories. /// </summary> /// <param name="directory">The directory to load sub-directories or files.</param> /// <returns>The directory collection.</returns> async Task <IReadOnlyList <IDirectoryReferenceInfo> > IFileReferenceClient.GetDirectoriesAsync(IFileContainerReferenceInfo directory) { var col = new List <IDirectoryReferenceInfo>(); if (directory is not T info) { return(col); } var list = await GetDirectoriesAsync(info); if (list == null) { return(col); } foreach (var item in list) { col.Add(item); } return(col); }