NPath CopyWithDeterminedDestination(NPath absoluteDestination, Func <NPath, bool> fileFilter) { if (absoluteDestination.IsRelative) { throw new ArgumentException("absoluteDestination must be absolute"); } if (FileExists()) { if (!fileFilter(absoluteDestination)) { return(null); } absoluteDestination.EnsureParentDirectoryExists(); File.Copy(ToString(), absoluteDestination.ToString(), true); return(absoluteDestination); } if (DirectoryExists()) { absoluteDestination.EnsureDirectoryExists(); foreach (var thing in Contents()) { thing.CopyWithDeterminedDestination(absoluteDestination.Combine(thing.RelativeTo(this)), fileFilter); } return(absoluteDestination); } throw new ArgumentException("Copy() called on path that doesnt exist: " + ToString()); }
public static IEnumerable<NPath> Move(this IEnumerable<NPath> self, NPath dest) { if (dest.IsRelative) throw new ArgumentException("When moving multiple files, the destination cannot be a relative path"); dest.EnsureDirectoryExists(); return self.Select(p => p.Move(dest.Combine(p.FileName))).ToArray(); }
public static IEnumerable <NPath> Move(this IEnumerable <NPath> self, NPath dest) { if (dest.IsRelative) { throw new ArgumentException("When moving multiple files, the destination cannot be a relative path"); } dest.EnsureDirectoryExists(); return(self.Select(p => p.Move(dest.Combine(p.FileName))).ToArray()); }
public NPath Copy(NPath dest, Func <NPath, bool> fileFilter) { ThrowIfRelative(); if (dest.IsRelative) { dest = Parent().Combine(dest); } if (dest.DirectoryExists()) { return(Copy(dest.Combine(FileName), fileFilter)); } if (FileExists()) { if (!fileFilter(dest)) { return(null); } dest.EnsureParentDirectoryExists(); File.Copy(ToString(), dest.ToString(), true); return(dest); } if (DirectoryExists()) { dest.EnsureDirectoryExists(); foreach (var thing in Contents()) { thing.Copy(dest.Combine(thing.RelativeTo(this)), fileFilter); } return(dest); } throw new ArgumentException("Copy() called on path that doesnt exist: " + ToString()); }
public IEnumerable<NPath> CopyFiles(NPath destination, bool recurse, Func<NPath, bool> fileFilter = null) { destination.EnsureDirectoryExists(); return Files(recurse).Where(fileFilter ?? AlwaysTrue).Select(file => file.Copy(destination.Combine(file.RelativeTo(this)))).ToArray(); }
NPath CopyWithDeterminedDestination(NPath absoluteDestination, Func<NPath,bool> fileFilter) { if (absoluteDestination.IsRelative) throw new ArgumentException ("absoluteDestination must be absolute"); if (FileExists()) { if (!fileFilter(absoluteDestination)) return null; absoluteDestination.EnsureParentDirectoryExists(); File.Copy(ToString(), absoluteDestination.ToString(), true); return absoluteDestination; } if (DirectoryExists()) { absoluteDestination.EnsureDirectoryExists(); foreach (var thing in Contents()) thing.CopyWithDeterminedDestination(absoluteDestination.Combine(thing.RelativeTo(this)), fileFilter); return absoluteDestination; } throw new ArgumentException("Copy() called on path that doesnt exist: " + ToString()); }
public IEnumerable <NPath> CopyFiles(NPath destination, bool recurse, Func <NPath, bool> fileFilter = null) { destination.EnsureDirectoryExists(); return(Files(recurse).Where(fileFilter ?? AlwaysTrue).Select(file => file.Copy(destination.Combine(file.RelativeTo(this)))).ToArray()); }