我在使用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