/// <summary> /// Deletes all files in the given directory. /// <para>If recursive flag is `true` all subdirectories and files will be removed.</para> /// If recursive flag is `false` the method will fail if the target is not empty. /// </summary> /// <param name="directoryInfo">Info of directory to clear</param> /// <param name="recursive">If <paramref name="recursive"/> is true then all subfolders are also deleted.</param> /// <remarks>Function loads every file and attribute. Alls read-only flags will be removed before removing.</remarks> public static void DeleteDirectory(DirectoryDetail directoryInfo, bool recursive = false) { // Contents if (recursive) { // search all contents var subFiles = FindPaths(directoryInfo.FullNameUnc, pathFormatReturn: UncOrRegular.UNC); foreach (var item in subFiles) { DeleteFileUnc(item); } var subDirs = EnumerateDirectories(directoryInfo.PathInfo); foreach (var subDir in subDirs) { DeleteDirectory(subDir, true); } } // Remove specified var removed = Win32SafeNativeMethods.RemoveDirectory(directoryInfo.FullNameUnc); var win32Error = Marshal.GetLastWin32Error(); if (!removed) { NativeExceptionMapping(directoryInfo.FullName, win32Error); } }
public ActionResult Create([Bind(Include = "DirectoryId")] Models.Directory directory) { if (ModelState.IsValid) { List <DirectoryDetail> directoryDetails = new List <DirectoryDetail>(); for (int i = 0; i < Request.Files.Count; i++) { var file = Request.Files[i]; if (file != null && file.ContentLength > 0) { var fileName = Path.GetFileName(file.FileName); DirectoryDetail directoryDetail = new DirectoryDetail() { FileName = fileName, Extension = Path.GetExtension(fileName), Id = Guid.NewGuid() }; directoryDetails.Add(directoryDetail); var path = Path.Combine(Server.MapPath("~/Content/Files/"), directoryDetail.Id + directoryDetail.Extension); file.SaveAs(path); } } directory.DirectoryDetail = directoryDetails; db.Directories.Add(directory); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(directory)); }