gpt4 book ai didi

c# - 尝试以编程方式删除文件夹时出现 "Directory is not empty"错误

转载 作者:IT王子 更新时间:2023-10-29 04:12:01 25 4
gpt4 key购买 nike

在我的应用中,我构建了一个系统,用户可以在其中创建图片库。照片以 category_name/gallery_name/{pictures} 格式保存在磁盘上的文件夹中。每张上传的照片都存储在上面给出的相关目录结构下。

虽然尝试删除类别以及从数据库中删除时,我也想从系统中删除相关文件夹。当我第一次收到错误消息“目录不为空”时,我 searched and found这个解决方案:

public static void DeleteDirectory(string target_dir)
{
string[] files = Directory.GetFiles(target_dir);
string[] dirs = Directory.GetDirectories(target_dir);

foreach (string file in files)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}

foreach (string dir in dirs)
{
DeleteDirectory(dir);
}

Directory.Delete(target_dir, false);
}

使用此解决方案,“gallery_name”文件夹中的照片可以正常删除,然后 gallery_name 文件夹本身也可以正常删除。所以我们现在只剩下一个空的 category_name 文件夹。然后调用上述子例程 (Directory.Delete(target_dir, false);) 中的最后一段代码来删除 category_name 文件夹。错误再次出现..

有谁知道解决这个问题的方法吗?

  1. Directory.Delete(target_dir, true); 没有用,这就是我尝试替代方法的原因。
  2. 我可以完全控制父文件夹,而且 category_name 和 gallery_name 文件夹也是以编程方式创建的,没有任何问题。
  3. 正如我提到的,子目录(gallery_name 文件夹)及其内容(照片)用这段代码删除就好了。导致错误的是 category_name 文件夹,即使在此代码之后,它只是一个空文件夹。

我得到的异常信息是:

System.IO.IOException was unhandled by user code
HResult=-2147024751
Message=The directory is not empty.

Source=mscorlib
StackTrace:
at 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)
at System.IO.Directory.Delete(String path)
at MyApp.PhotoGallery.Categories.deleteCategory(Int32 cID, String categoryname) in d:\Documents\My Dropbox\web projects\MyAppFolder\App_Code\BLL\PhotoGallery.vb:line 291
at _admhades_PhotoGallery.deleteCategory(Int32 categoryID, String categoryname) in d:\Documents\My Dropbox\web projects\HavadisPre\_admhades\PhotoGallery.aspx.vb:line 71

最佳答案

您可以只使用 Directory.Delete(target_dir, true); 递归地删除目录和所有文件。您不必编写自定义函数。

关于c# - 尝试以编程方式删除文件夹时出现 "Directory is not empty"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12415105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com