我正在使用Zetalongpath访问长路径的pdf文件 .

文件将从“D:\ Active Folder \ ReadyTobeTransfer \ ABC \ XYZ”等位置上传到“D:\ Upload Intake \ ABC \ XYZ”

我想在成功上传后递归删除文件夹ABC,因为这是客户端的要求 .

这是我从浏览器保存上传文件的代码 .

var FilingDocs = new List<HttpPostedFileBase>();                                

            for (var i = 0; i < Request.Files.Count; i++)
            {
                if (Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('.') + 1).ToLower() == "pdf")                 
                {                        
                    FilingDocs.Add(Request.Files[i]);                      
                }
            }
            foreach (HttpPostedFileBase file in FilingDocs)                    
                {                        

                    if (file != null)                     
                    {                                           
                        // Read bytes from http input stream                        
                        BinaryReader b = new BinaryReader(file.InputStream);

                        byte[] binData = b.ReadBytes(file.ContentLength);

                        string fileName;

                        if (file.FileName.LastIndexOf('\\') > 0)
                        {
                            fileName = file.FileName.Substring(file.FileName.LastIndexOf('\\') + 1);
                        }
                        else
                        {
                            fileName = file.FileName;
                        }                        

                        ZlpIOHelper.WriteAllBytes(fullPath + '\\' + fileName, binData);

                        file.InputStream.Close();
                        b.Close();
                    }
                }

// DB插入方法

//删除上传文件夹的代码

string ParentFolder = "D:\Active Folder\ReadyTobeTransfer\ABC";

string ChildFolder = "D:\Active Folder\ReadyTobeTransfer\ABC\XYZ";


                    //Delete Files from ChildFolder
                    string[] files = Directory.GetFiles(ChildFolder, "*.pdf");

                    try
                    {
                        foreach (string file in files)
                        {
                            //Remove read only access
                            System.IO.File.SetAttributes(file, FileAttributes.Normal);
                            System.IO.File.Delete(file);
                        }


                        //Sleep for 5 second
                        System.Threading.Thread.Sleep(new TimeSpan(0, 0, 5));

                        //Check whether Child Folder Exist
                        if (ZlpIOHelper.DirectoryExists(ChildFolder))
                        {
                            //Delete Uploaded Files Folder                                
                            Directory.Delete(ChildFolder, true);
                        }

                         //Sleep for 5 second
                        System.Threading.Thread.Sleep(new TimeSpan(0, 0, 5));

                        //Check whether Parent Folder Exist
                        if (Directory.Exists(ParentFolder))
                        {
                            //Get Parent File information to check whether it contains any file or folder
                            ZlpDirectoryInfo DeleteParentFolder = new ZlpDirectoryInfo(ParentFolder);

                            if (DeleteParentFolder.GetFiles().Length == 0 && DeleteParentFolder.GetDirectories().Length == 0)
                            {
                                //Delete Parent Folder
                                Directory.Delete(ParentFolder, true);                                    
                            }
                        }
                    }
                    catch (IOException)
                    {
                        if (ZlpIOHelper.DirectoryExists(ChildFolder))
                            Directory.Delete(ChildFolder);

                        if (ZlpIOHelper.DirectoryExists(ParentFolder))
                            Directory.Delete(ParentFolder);

                    }
                    catch (UnauthorizedAccessException)
                    {
                        if (ZlpIOHelper.DirectoryExists(ChildFolder))
                            Directory.Delete(ChildFolder);

                        if (ZlpIOHelper.DirectoryExists(ParentFolder))
                            Directory.Delete(ParentFolder);
                    }

删除代码会出现错误“目录不为空” . 但文件将从位置'D:\ Active Folder \ ReadyTobeTransfer \ ABC \ XYZ'中删除,但它不会删除父文件夹和子文件夹 .

这是错误消息

目录不为空 . StackTrace: - 位于System.IO.Directory.Delete(String fullPath)的System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)System.IO.Directory.DeleteHelper(String fullPath,String userPath,Boolean recursive,Boolean throwOnTopLevelDirectoryNotFound) ,String userPath,Boolean recursive,Boolean checkHost)