按文件名查找文件
本文关键字:文件 查找 文件名 | 更新日期: 2023-09-27 17:57:49
根据文件名查找文件并返回其路径的最佳方法是什么?
例如
public string GetFilePath(string filename)
{
// some work to get the path
return filepath;
}
我试过这个,但没有成功
public string GetFileContent(string filename)
{
DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(@"c:'");
FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + filename + "*.*");
foreach (FileInfo foundFile in filesInDir)
{
string fullName = foundFile.FullName;
return fullName;
}
return "found nothing";
}
有没有一种最佳做法可以通过硬盘上的文件名来查找文件?
试试这个:
Directory.GetFiles(@"c:'", filename, SearchOption.AllDirectories).FirstOrDefault()
请尝试一下。
string[] files = Directory.GetFiles(dir);
foreach(string file in files)
{
if(Path.GetFileName(file).Contains("Your filename"))
{
do stuffs...
}
}
性能:
IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*",System.IO.SearchOption.AllDirectories);
string searchTerm = @"Visual Studio";
// Search the contents of each file.
// A regular expression created with the RegEx class
// could be used instead of the Contains method.
// queryMatchingFiles is an IEnumerable<string>.
var queryMatchingFiles =
from file in fileList
let fileText =Path.GetFileName(file)
where fileText.Contains(searchTerm)
select file.FullName;
如果我在找一个文件,但不知道位置,那么我会使用bultin Windows搜索。
有关DSearch代码示例的示例,请参阅代码示例页面。
DSearch代码示例演示了如何为静态控制台应用程序,以使用微软搜索ISearchQueryHelper的互操作程序集。
否则,Directory
类具有诸如Directory.GetFiles
之类的内置帮助程序,它们将进行模式匹配。
public static string[] GetFiles(
string path,
string searchPattern,
SearchOption searchOption
)
您可以使用Directory.GetFiles
递归地在目录中搜索匹配的文件:
下面的工作示例将在目录"C:'"
中找到与"Hello"
匹配的文件的所有完整路径。
static void Main(string[] args)
{
var files = GetFilePaths("*Hello*", "C:''");
foreach (var file in files)
{
Console.WriteLine(file);
}
}
public static IEnumerable<string> GetFilePaths(string pattern, string directory)
{
return Directory.GetFiles(directory, pattern, SearchOption.AllDirectories);
}
编辑
以下答案更好,因为它是围绕访问被拒绝的问题:
"目录"时忽略文件夹/文件。GetFiles()被拒绝访问