簡體   English   中英

按文件名查找文件

[英]Find a file by file name

通過文件名查找文件然后返回其路徑的最佳方法是什么?

例如

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 Search

請參閱代碼示例頁面以獲取特別是DSearch代碼示例的示例。

DSearch 代碼示例演示如何為靜態控制台應用程序創建一個類,以使用 ISearchQueryHelper 的 Microsoft.Search.Interop 程序集查詢 Windows Search。

否則, 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);
    }

編輯

以下答案更好,因為它解決了訪問被拒絕的問題:

當 Directory.GetFiles() 被拒絕訪問時忽略文件夾/文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM