示例#1
0
 public static IEnumerable <FsPath> GetAllFiles(this FsPath directory, string mask = "*.*")
 {
     // 当前目录的文件;
     foreach (var file in Directory.GetFiles(directory.ToString(), mask, SearchOption.TopDirectoryOnly))
     {
         if (!GitignoreParser.Default.IsMatch(file))
         {
             yield return(new FsPath(file));
         }
     }
     // 子目录的文件;
     foreach (var dir in Directory.GetDirectories(directory.ToString()))
     {
         if (!GitignoreParser.Default.IsMatch(dir))
         {
             foreach (var file in Directory.GetFiles(dir, mask, SearchOption.AllDirectories))
             {
                 if (!GitignoreParser.Default.IsMatch(file))
                 {
                     yield return(new FsPath(file));
                 }
             }
         }
     }
 }
示例#2
0
        public static bool Copy(this FsPath source, FsPath target, bool overwrite)
        {
            if (!source.IsExisting)
            {
                return(false);
            }
            var dir = Path.GetDirectoryName(target.ToString());

            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            File.Copy(source.ToString(), target.ToString(), overwrite);
            return(true);
        }
示例#3
0
        public static bool CopyDirectory(this FsPath sourceDirectory, FsPath TargetDir)
        {
            if (!Directory.Exists(TargetDir.ToString()))
            {
                Directory.CreateDirectory(TargetDir.ToString());
            }

            foreach (string newPath in Directory.GetFiles(sourceDirectory.ToString(), "*.*",
                                                          SearchOption.AllDirectories))
            {
                var targetfile = newPath.Replace(sourceDirectory.ToString(), TargetDir.ToString());
                File.Copy(newPath, targetfile, true);
            }
            return(true);
        }
示例#4
0
 public static string ReadFile(this FsPath path)
 {
     using (var reader = File.OpenText(path.ToString()))
     {
         return(reader.ReadToEnd());
     }
 }
示例#5
0
        public static bool WriteFile(this FsPath target, params string[] contents)
        {
            FileInfo fileInfo = new FileInfo(target.ToString());

            if (!fileInfo.Exists)
            {
                Directory.CreateDirectory(fileInfo.Directory.FullName);
            }

            using (var writer = File.CreateText(target.ToString()))
            {
                foreach (var content in contents)
                {
                    writer.Write(content);
                }
            }

            return(true);
        }
示例#6
0
 public static string GetSRI(FsPath path)
 {
     using (var fs = File.OpenRead(path.ToString()))
     {
         using (var hashAlgorithm = new SHA384Managed())
         {
             byte[] hash = hashAlgorithm.ComputeHash(fs);
             return("sha384-" + Convert.ToBase64String(hash));
         }
     }
 }
示例#7
0
 public static bool CreateDir(this FsPath path)
 {
     if (!FsPath.IsEmptyPath(path))
     {
         Directory.CreateDirectory(path.ToString());
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#8
0
        public static bool CreateBackup(this FsPath source)
        {
            if (!source.IsExisting)
            {
                return(false);
            }
            string targetname = $"{source}_backup";

            if (File.Exists(targetname))
            {
                bool exists  = true;
                int  counter = 1;
                do
                {
                    targetname = $"{source}_backup{counter}";
                    ++counter;
                    exists = File.Exists(targetname);
                }while (exists);
            }
            File.Copy(source.ToString(), targetname);
            return(true);
        }