如何将列表转换为 DirectoryInfo
How convert List to DirectoryInfo
在我的应用程序中,我有一个像 "C:\Temp\Folder1" 这样的特定目录,想象一下这个目录有以下子目录:
C:\Temp\Folder1\Admin\Billy
C:\Temp\Folder1\Customer\Michael
C:\Temp\Folder1\Admin\Julian
C:\Temp\Folder1\Customer\May
C:\Temp\Folder1\Admin\Sebastian
我使用 DirectoryInfo.GetDirectories() 获取以上所有子目录并转换为列表以使用 C:\Temp\Folder1\Admin\ 过滤掉文件夹,我设法做到了。因此只有 "Customer" 个文件夹将保留在 DirectoryInfo 变量中。
假设我的列表只有以下项目:
C:\Temp\Folder1\Customer\Michael
C:\Temp\Folder1\Customer\May
但现在我遇到了一个问题,我需要删除 DirectoryInfo 变量中可用的客户文件夹,但筛选的记录是一个列表,而不是 DirectoryInfo class 所以我无法使用 DirectoryInfo.Delete() 删除每个客户文件夹。
那么如何将列表转换为 DirectoryInfo 或手动将列表中的每个项目添加到 DirectoryInfo 以便我可以对每个 Customer 文件夹执行删除?
how do I convert the list to DirectoryInfo or manually add each item
in the list into DirectoryInfo so that I can perform deletion on each
Customer folder?
您可以使用 Enumerable.Select
投影每个元素并从每个元素创建一个 DirectoryInfo
:
foreach (var directory in listOfPaths.Select(path => new DirectoryInfo(path))
{
directory.Delete();
}
您应该查看 System.IO.Directory.Delete(string path) 方法。这不需要创建一个新对象来删除文件夹。
在我的应用程序中,我有一个像 "C:\Temp\Folder1" 这样的特定目录,想象一下这个目录有以下子目录:
C:\Temp\Folder1\Admin\Billy
C:\Temp\Folder1\Customer\Michael
C:\Temp\Folder1\Admin\Julian
C:\Temp\Folder1\Customer\May
C:\Temp\Folder1\Admin\Sebastian
我使用 DirectoryInfo.GetDirectories() 获取以上所有子目录并转换为列表以使用 C:\Temp\Folder1\Admin\ 过滤掉文件夹,我设法做到了。因此只有 "Customer" 个文件夹将保留在 DirectoryInfo 变量中。
假设我的列表只有以下项目:
C:\Temp\Folder1\Customer\Michael
C:\Temp\Folder1\Customer\May
但现在我遇到了一个问题,我需要删除 DirectoryInfo 变量中可用的客户文件夹,但筛选的记录是一个列表,而不是 DirectoryInfo class 所以我无法使用 DirectoryInfo.Delete() 删除每个客户文件夹。
那么如何将列表转换为 DirectoryInfo 或手动将列表中的每个项目添加到 DirectoryInfo 以便我可以对每个 Customer 文件夹执行删除?
how do I convert the list to DirectoryInfo or manually add each item in the list into DirectoryInfo so that I can perform deletion on each Customer folder?
您可以使用 Enumerable.Select
投影每个元素并从每个元素创建一个 DirectoryInfo
:
foreach (var directory in listOfPaths.Select(path => new DirectoryInfo(path))
{
directory.Delete();
}
您应该查看 System.IO.Directory.Delete(string path) 方法。这不需要创建一个新对象来删除文件夹。