gpt4 book ai didi

c# - 如何通过名称的一部分获取目录中的文件夹

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:59 27 4
gpt4 key购买 nike

我想弄清楚如何获取某个目录中文件夹的名称,但我需要的文件夹名称是随机生成的,但它的名称总是以 .user 结尾(例如文件夹可以是 1245fa.user 或 WRf5.user)。我该怎么做?

这是我如何获得一个名称永不改变的文件夹

string slug = @"%userprofile%\AppData\Roaming\MyApp\Profiles\constantuser\";
string filePath = Environment.ExpandEnvironmentVariables(slug);
string targetPath = @"C:\ErrorLog";
string sourceFile = System.IO.Path.Combine(filePath, p);
string destFile = System.IO.Path.Combine(targetPath, p);

在这种情况下,我需要 constantuser 成为以 .user 结尾的文件夹

最佳答案

您可以在 上尝试 Where()(或 First()Single()、...)LINQ 扩展Directory.EnumerateDirectories().

假设以下代码(请注意以“父”目录结尾的 slug):

var slug = @"%userprofile%\AppData\Roaming\MyApp\Profiles\";
var parentDirectoy = Environment.ExpandEnvironmentVariables(slug);

如果您确定恰好有一个目录符合条件,您可以这样做:

var directoryName = Directory.EnumerateDirectories(parentDirectory)
.SingleOrDefault(dir => dir.EndsWith(".user"));
if (directoryName != null)
{
// do your thing
}

如果您使用 Single 而不是 SingleOrDefault,则缺少目录或多个目录将导致异常,而不是返回 null

如果可能有多个目录,你可以这样做:

var directoryNames = Directory.EnumerateDirectories(parentDirectory)
.Where(dir => dir.EndsWith(".user"));
foreach (var directoryName in directoryNames)
{
// do your thing
}

如果没有找到匹配项,循环可能会运行零次或多次;每场比赛一个。

关于c# - 如何通过名称的一部分获取目录中的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29167582/

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