我正在使用 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();
}
}
//数据库插入方法
//删除上传文件夹的代码
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.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound) at System.IO.Directory.Delete(String fullPath , String userPath, Boolean recursive, Boolean checkHost)