问题描述
我有一个路径,例如 C:/desktop,我想知道在此路径中是否有任何文件夹命名为文件夹 A、文件夹 B...我不在乎它们中有什么,我只需要知道它们是否存在。我看到有人问过类似的问题,但他们是关于拆分路径名,但我唯一的路径名是最基本的,在其他问题中,路径名就像 c:/desktop/folderA/folderB 我只想知道 C:/desktop/folderA 是否存在并使用一堆其他文件夹名称进行处理
解决方法
你试过$cest = "2021-04-18 23:34:27 CEST";
$utcCEST = date_create($cest)->setTimeZone(new DateTimeZone('UTC'));
echo $utcCEST->format('c');
//2021-04-18T21:34:27+00:00
吗?
GetDirectories()
,
您可以在@mxmissile 提到的 GetDirectories
上使用重载,以明确您只想搜索顶级目录。
System.IO.Directory.GetDirectories("C:/desktop","*",SearchOption.TopDirectoryOnly)
,
if (Directory.Exists(@"location")){
//found it
}
,
您可以使用 System.IO.Directory.GetDirectories
在你的情况下,你应该找到你的“文件夹 A”:
Directory.GetDirectories(@"C:\desktop\","folderA");
您可以尝试检查是否 Directory.Exists()
。如果您已经知道要查找哪些文件夹,则可以执行以下操作:
var main_dir = @"C:\desktop\";
string[] folders = {"FolderA","FolderB"};
string[] dir = new string[folders.Length];
for(int i = 0; i < folders.Length; ++i)
{
dir[i] = Path.Combine(main_dir,folders[i]);
Console.WriteLine(dir[i]);
Console.WriteLine(Directory.Exists(dir[i]));
}
,
这就是你的要求。我添加了一个 foreach 来获取所有案例(文件夹 A、b、c ...)
bool directoryExist = System.IO.Directory.Exists(@"c:\desktop\forder A");
foreach (var folderPath in System.IO.Directory.GetDirectories(@"c:\desktop"))
{
string folderName = System.IO.Path.GetDirectoryName(folderPath);
if (folderName == "Folder A") { //Case Sensible
}
}
,
您可以在 Linq 的帮助下尝试 查询:
using System.IO;
using System.Linq;
...
// Do we have in root
string root = @"C:/desktop";
// Any subdir(s) mentioned
HashSet<string> subdirs = new HashSet<string>(StringComparer.OrdinalIgnoreCase) {
@"folder A",@"folder B",};
bool contains = Directory
.EnumerateDirectories(root,SearchOption.TopDirectoryOnly)
.Any(dir => subdirs.Contains(new DirectoryInfo(dir).Name));
如果您想要深度搜索,请将 SearchOption.TopDirectoryOnly
更改为 SearchOption.AllDirectories
(如果 root
本身或其任何子目录具有 subdirs
中提到的文件夹) .您可以更改查询以回答不同的问题:
// If all subdirs exist:
bool conatinsAll = Directory
.EnumerateDirectories(root,SearchOption.TopDirectoryOnly)
.All(dir => subdirs.Contains(new DirectoryInfo(dir).Name));
// Names of subdirs exist
string[] existingSubDirs = Directory
.EnumerateDirectories(root,SearchOption.TopDirectoryOnly)
.Where(dir => subdirs.Contains(new DirectoryInfo(dir).Name))
.ToArray();