检查目录或子目录中是否存在文件
本文关键字:是否 存在 文件 子目录 检查 | 更新日期: 2023-09-27 18:09:17
我想检查一个文件是否存在于目录或子目录中。
string[] filePaths = Directory.GetFiles(padserver, "*", SearchOption.AllDirectories);
try {
DataContainer.bestaatal = false;
lusfilebestaat = 0;
while (DataContainer.bestaatal == false) {
filePaths[lusfilebestaat] = Path.GetFileName(filePaths[lusfilebestaat]);
if (filePaths[lusfilebestaat] == bestandsnaam) {
DataContainer.bestaatal = true;
}
lusfilebestaat = lusfilebestaat + 1;
}
}
这个可以工作,但是速度很慢,因为我的服务器上有很多文件。
有没有人有解决这个问题的办法?
使用System.IO.File.Exists()
方法。看到msdn。
这可能对你有帮助
internal static bool FileOrDirectoryExists(string name)
{
return (Directory.Exists(name) || File.Exists(name))
}
另一种选择是自己编写搜索函数,其中一个应该可以工作:
private bool FileExists(string rootpath, string filename)
{
if(File.Exists(Path.Combine(rootpath, filename)))
return true;
foreach(string subDir in Directory.GetDirectories(rootpath, "*", SearchOption.AllDirectories))
{
if(File.Exists(Path.Combine(rootpath, filename)))
return true;
}
return false;
}
private bool FileExistsRecursive(string rootPath, string filename)
{
if(File.Exists(Path.Combine(rootPath, filename)))
return true;
foreach (string subDir in Directory.GetDirectories(rootPath))
{
return FileExistsRecursive(subDir, filename);
}
return false;
}
第一个仍然先取出所有的目录名,所以如果有很多子目录并且文件靠近顶部,可能会很慢。
第二个是递归的,在最坏的情况下可能会慢一些,但如果有许多嵌套的子目录并且文件位于顶级目录,则会更快。