我正在嘗試找到撰寫遞回方法來查找給定目錄中的檔案。我實際上是編程和 C# 的初學者,這是我第一次撰寫遞回方法。該方法將遍歷每個檔案和所有子目錄以查找檔案。
這是我寫的:
static string GetPath(string currentDirectory)
{
string requiredPath = "";
string[] files = Directory.GetFiles(currentDirectory);
string[] dirs = Directory.GetDirectories(currentDirectory);
foreach (string aPath in files)
{
if (aPath.Contains("A.txt"))
{
requiredPath = aPath;
}
}
foreach (string dir in dirs)
{
requiredPath = GetPath(dir);
}
return requiredPath;
}
現在的問題是當我通過currentDirectoryas時C:\users\{Enviroment.UserName}\OneDrive\Desktop\TestFolder,它包含更多的測驗檔案夾,它可以作業。但是當我嘗試在我想在其中找到檔案的檔案夾中運行它時,它不會回傳任何內容。該檔案夾的路徑是C:\users\{Enviroment.UserName}\OneDrive\Data\SomeFolder該檔案夾具有一些子目錄和檔案以及檔案A.txt
我什至嘗試過:
foreach (string aPath in files)
{
if (aPath.Contains("A.txt"))
{
requiredPath = aPath;
}
}
但它不起作用。難道我做錯了什么?我不明白為什么它在測驗檔案夾中有效,以及為什么當我嘗試在真實檔案夾中運行它時它不起作用。再說一次,我只是一個青少年學習編程的初學者,這是我第一次撰寫遞回方法,所以是的。這也是我在這個社區的第一個問題。
uj5u.com熱心網友回復:
好的,我找到了解決方案,我只需要在遞回時輸入一個 if 命令。
foreach (string dir in dirs)
{
requiredPath = GetPath(dir);
if (requiredPath.Contains("PasswordGenerator.py"))
return requiredPath;
}
它沒有檢查檔案是否在requiredPath其中,只是繼續搜索。
好吧,我向父親展示了我的方法,他為我做了另一個更簡單的方法。
static string GetFilePath(string folderToSearch, string fileName)
{
if (Directory.GetFiles(folderToSearch).Any(x => x.Contains(fileName)))
return folderToSearch;
var folders = Directory.GetDirectories(folderToSearch);
foreach(var folder in folders)
{
var filePath = GetFilePath(folder, fileName);
if (filePath != null)
return filePath;
}
return null;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/417799.html
標籤:
上一篇:轉換為尾遞回
