我在使用System.IO
時遇到了一個特殊問題。當您遍歷類型爲File
的文件的目錄時,如果沒有擴展名,則不會檢測到該文件。查找特定文件類型
// Successful:
var files = DirectoryInfo(server.Path).GetFiles("sitemap*.*);
var contents = Directory.GetFiles(server.Path, "sitemap*.*", ...);
上面的代碼在大多數情況下就足夠了,但是如果您有其他類型的名稱相同,它們也會被收集起來。
當您只想要sitemap.file
時遇到我們的問題。
// Invalid Code:
var files = DirectoryInfo(server.Path).GetFiles("sitemap*.file);
var contents = Directory.GetFiles(server.Path, "sitemap*.file", ...);
var examples = DirectoryInfo(server.Path).GetFiles("sitemap*);
該數組爲空,它沒有找到任何原始的.file
擴展文件。我假設問題發生是因爲它實際上沒有擴展名。
你如何繞過這個限制?
更新:我知道我可以做沿着這些線路與FileInfo[]
東西,但希望能找到一個更簡單的辦法,然後重複,然後用比較:
var files = DirectoryInfo(server.Path).GetFiles("sitemap*.*);
foreach(var file in files)
if(file.Extension != ".gz" && file.Extension != ".xml")
{
// Do something with File.
}
特別是如果你有各式各樣您目錄中的擴展名。你會認爲它會考慮這樣一種類型,或缺乏這種類型。
不能確定是怎麼回事,該行'VAR內容= Directory.GetFiles(@ 「C:\測試」 ,「sitemap * .file」);'應該返回所有以您的標準結尾的文件。剛剛嘗試過您的代碼,並且它按預期工作。 – Habib 2015-02-09 17:18:28
我認爲他正在談論的文件稱爲「網站地圖」,沒有擴展名。這是正確的格雷格? – pm100 2015-02-09 17:20:09
「,但Windows分配一個原始的.File擴展名,因爲它不知道如何處理它」。不,它不。在Windows資源管理器中查看您的文件夾。你能否在你的問題中加上一個實際文件的名稱,該文件應該符合其標準。 – Habib 2015-02-09 17:20:14