示例#1
0
        public NPath Move(NPath dest)
        {
            ThrowIfRelative();
            if (dest.IsRelative)
            {
                return(Move(Parent.Combine(dest)));
            }

            if (dest.DirectoryExists())
            {
                return(Move(dest.Combine(FileName)));
            }

            if (FileExists())
            {
                dest.EnsureParentDirectoryExists();
                File.Move(ToString(), dest.ToString());
                return(dest);
            }

            if (DirectoryExists())
            {
                Directory.Move(ToString(), dest.ToString());
                return(dest);
            }

            throw new ArgumentException("Move() called on a path that doesn't exist: " + ToString());
        }
示例#2
0
        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());
        }
示例#3
0
 public static string HashOfFile(NPath path)
 {
     string str;
     using (MD5 md = MD5.Create())
     {
         using (FileStream stream = File.OpenRead(path.ToString()))
         {
             str = HashToString(md.ComputeHash(stream));
         }
     }
     return str;
 }
示例#4
0
文件: NiceIO.cs 项目: naruse/NiceIO
        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());
        }
示例#5
0
        public NPath Move(NPath dest)
        {
            ThrowIfRelative();
            if (dest.IsRelative)
                return Move(Parent.Combine(dest));

            if (dest.DirectoryExists())
                return Move(dest.Combine(FileName));

            if (FileExists())
            {
                dest.EnsureParentDirectoryExists();
                File.Move(ToString(), dest.ToString());
                return dest;
            }

            if (DirectoryExists())
            {
                Directory.Move(ToString(), dest.ToString());
                return dest;
            }

            throw new ArgumentException("Move() called on a path that doesn't exist: " + ToString());
        }
示例#6
0
        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());
        }
示例#7
0
 public static string Execute(NiceIO.NPath filename, string arguments, Dictionary <string, string> envVars = null)
 {
     return(Execute(filename.ToString(), arguments, envVars));
 }