如何查找和使用Directory.GetFiles的正确路径?
我想从一个特定的文件夹及其子目录返回文件名,但该文件夹可以在不同的驱动器和Windows版本的不同路径上存在,例如:如何查找和使用Directory.GetFiles的正确路径?
C:\ Program Files文件\ MyApp的
d:\ Program Files文件\ MyApp的
E:\ Program Files文件\ MyApp的
F:\ Program Files文件\ MyApp的
C:\ Program Files文件(x86)的\ MyApp的
d:\程序文件(x86)\ MyApp的
E:\程序文件(x86)\ MyApp的
˚F :\ Program Files文件(x86)的\ MyApp的
(此文件夹可以在只有其中的一个路径存在。)
这是我已经试过:
Directory.GetFiles("path", "thefiles", SearchOption.AllDirectories)
如果我理解正确的话,你正在寻找的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);
如果这不是你在找什么,那么请解释一下你的问题更多,因为它不够详细。
完美!谢谢... Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)是我一直在寻找的。 –
如果你想使用的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); }
}
}
@LordPermaximum这是更一般的情况。你需要程序文件目录的事实是由Tom A决定的,他读了你的思想,他的代码返回了获取这个特殊目录的* specific *的情况;你没有在你的文章中提到任何地方,你只是给了一个通用的文件夹列表,并且*它们中的一些恰好是程序文件目录。 – Quantic
我想我用“......”和“继续”不能说清楚。我正在程序文件中搜索应用程序目录,但是我必须首先根据不同的Windows版本和驱动器找到适用于32位程序文件目录的正确路径。不过,您的解决方案可以用于“特定”文件夹的列表。我正是这个意思。顺便说一句,我没有让你失望。 –
,所以你想知道的[在您的EXE正在运行?](http://*.com/questions/837488/how-can-i-get-the-applications-path-in-a-net-console-application) – Liam
这不是我们得到使用以标记垃圾邮件问题,但您遵循网站规则。为此,你应该已经参加了[游览]并学会了[问]。如果你不喜欢遵守或不粗鲁,你必须忍受这样的评论和可能的国旗,直到被禁止。 – Olaf
@MillieSmith:你也是。至少我不是故意这样做的。 – Olaf