使用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.
}
特别是如果您的目录中有各种各样的扩展名。你会认为这会占到这种类型,或者缺乏。
答案 0 :(得分:7)
我相信您希望搜索以sitemap
开头并且没有任何扩展名的文件。使用"sitemap*."
模式。
var contents = Directory.GetFiles(server.Path, "sitemap*.");
注意模式中的最后一个点(。),它指定获取那些没有任何扩展名的文件。
这将为您提供以下文件:
sitemap1
sitemap2
并将排除以下文件:
sitemap1.gz
sitempa2.gz
答案 1 :(得分:1)
文件没有扩展名。将资源管理器配置为不隐藏扩展程序,您将看到。
如果您只是在寻找无扩展名文件,请将if
更改为:
if(string.IsNullOrEmpty(file.Extension))