public bool IsFileIgnored(string fileName) { return(IgnoredFiles.Any(fileName.EndsWith) || !Extensions.Any(fileName.EndsWith)); }
public static void WriteFilesToDatabase(DbFileContext ctx, Uri initialUri, DirectoryInfo root, int?id) { string virtualPath; string dirName; if (id == null) { virtualPath = "/"; dirName = null; } else { var currentUri = new Uri(root.FullName); var tempRelative = initialUri.MakeRelativeUri(currentUri).ToString(); var iof = tempRelative.IndexOf('/'); virtualPath = tempRelative.Substring(iof); dirName = root.Name; } foreach (var ignoredDirectory in IgnoredDirectories) { if (virtualPath.StartsWith(ignoredDirectory, StringComparison.OrdinalIgnoreCase)) { return; } } var dbFile = new DbFile { IsDirectory = true, Name = dirName, VirtualPath = virtualPath, ParentId = id }; ctx.DbFiles.Add(dbFile); ctx.SaveChanges(); foreach (var fi in root.EnumerateFiles()) { bool ignore = IgnoredExtensions.Any(ignoredExtension => fi.Extension.StartsWith(ignoredExtension)) || IgnoredFiles.Any(x => x.Equals(fi.Name, StringComparison.OrdinalIgnoreCase)); if (ignore) { continue; } Console.WriteLine(fi.FullName); var dbFileFolder = new DbFile { IsDirectory = false, Name = Path.GetFileNameWithoutExtension(fi.Name), Extension = fi.Extension, VirtualPath = Path.Combine(virtualPath, fi.Name).Replace('\\', '/'), ParentId = dbFile.Id, }; if (IsTextFile(fi.Extension)) { var text = File.ReadAllText(fi.FullName, Encoding.UTF8); dbFileFolder.Texto = text; } else { var bytes = File.ReadAllBytes(fi.FullName); dbFileFolder.Bytes = bytes; dbFileFolder.IsBinary = true; } ctx.DbFiles.Add(dbFileFolder); ctx.SaveChanges(); } foreach (var di in root.EnumerateDirectories()) { WriteFilesToDatabase(ctx, initialUri, di, dbFile.Id); } }