我想从特定文件夹及其子目录返回文件名,但此文件夹可以存在于不同的路径,具体取决于驱动器和Windows版本,例如:
C:\ Program Files \ MyApp
D:\ Program Files \ MyApp
E:\ Program Files \ MyApp
F:\ Program Files \ MyApp
C:\ Program Files(x86)\ MyApp
D:\ Program Files(x86)\ MyApp
E:\ Program Files(x86)\ MyApp
F:\ Program Files(x86)\ MyApp
(此文件夹只能存在于其中一个路径中。)
这是我尝试过的:
Directory.GetFiles("path", "thefiles", SearchOption.AllDirectories)
答案 0 :(得分:1)
如果我理解正确,您正在寻找SpecialFolder(https://msdn.microsoft.com/en-us/library/system.environment.specialfolder)枚举。以下是如何使用它的示例:
Console.WriteLine("ProgramFilesX86: {0}", Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));
Console.WriteLine("ProgramFiles: {0}", Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
然后,只需连接项目的目录。
您还可以获取可执行文件的BaseDirectory:
Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory);
如果这不是您想要的,请更详细地解释您的问题,因为它不够详细。
答案 1 :(得分:-1)
如果您想使用Directory.GetFiles("path", "thefiles", SearchOption.AllDirectories)
的结果,那么我可能会这样做(逗号分开并在文件夹的“列表”中添加引号):
List<string> foldersToSearch = new List<string>(){C:\Program Files\MyApp
D:\Program Files\MyApp
E:\Pro...
F:\
G:\
H:\
goes on and;
C:\Program Files (x86)\MyApp
D:\Program Files (x86)\MyApp
E:..
F:\
G:\
H:\
I:\};
List<string> filesInSpecificFolder = new List<string>();
foreach (var folderToSearch in foldersToSearch)
{
foreach (var file in Directory.GetFiles(folderToSearch, "thefiles", SearchOption.AllDirectories))
{
if (Path.GetDirectoryName(file) == "specificFolder")
{ filesInSpecificFolder.Add(file); }
}
}