我正在尋找.NET中的內置功能來查詢具有相對路徑和通配符的文件夾,類似於Powershell的dir
命令(也稱爲ls
)。據我記憶,Powershell返回一個數組DirectoryInfo
和FileInfo
.NET對象,稍後可用於處理。示例輸入:在.NET中是否有類似Powershell的目錄?
..\bin\Release\XmlConfig\*.xml
會翻譯成幾個FileInfo
的XML文件。
在.NET中是否有類似的東西?
我正在尋找.NET中的內置功能來查詢具有相對路徑和通配符的文件夾,類似於Powershell的dir
命令(也稱爲ls
)。據我記憶,Powershell返回一個數組DirectoryInfo
和FileInfo
.NET對象,稍後可用於處理。示例輸入:在.NET中是否有類似Powershell的目錄?
..\bin\Release\XmlConfig\*.xml
會翻譯成幾個FileInfo
的XML文件。
在.NET中是否有類似的東西?
System.IO.Directory
是提供該功能的靜態類。
比如你的例子是:
using System.IO;
bool searchSubfolders = false;
foreach (var filePath in Directory.EnumerateFiles(@"..\bin\Release\XmlConfig",
"*.xml", searchSubfolders))
{
var fileInfo = new FileInfo(filePath); //If you prefer
//Do something with filePath
}
一個更復雜的例子是:(注意,這是不是真的很測試徹底,比如結尾的字符串\
會導致它出錯)
var searchPath = @"c:\appname\bla????\*.png";
//Get the first search character
var firstSearchIndex = searchPath.IndexOfAny(new[] {'?', '*'});
if (firstSearchIndex == -1) firstSearchIndex = searchPath.Length;
//Get the clean part of the path
var cleanEnd = searchPath.LastIndexOf('\\', firstSearchIndex);
var cleanPath = searchPath.Substring(0, cleanEnd);
//Get the dirty parts of the path
var splitDirty = searchPath.Substring(cleanEnd + 1).Split('\\');
//You now have an array of search parts, all but the last should be ran with Directory.EnumerateDirectories.
//The last with Directory.EnumerateFiles
//I will leave that as an exercise for the reader.
您可以使用DirectoryInfo.EnumerateFileSystemInfos
API:
var searchDir = new DirectoryInfo("..\\bin\\Release\\XmlConfig\\");
foreach (var fileSystemInfo in searchDir.EnumerateFileSystemInfos("*.xml"))
{
Console.WriteLine(fileSystemInfo);
}
該方法將流式處理結果作爲FileSystemInfo
的一個序列,這是FileInfo
和DirectoryInfo
的基類。
Um。 'FileInfo'和'DirectoryInfo'?你需要什麼模擬器?那些應該做的。 – Oded
@Oded:我正在尋找正確的函數來返回基於過濾器的FileInfo的數組/列表/枚舉。 – Neolisk
你爲什麼不看'FileInfo'或'DirectoryInfo' MSDN頁面呢?第一停靠港,你會找到你的答案。 – Oded