C# 获取除.zip之外的所有文件
这可能是一个简单的问题,但如何获取文件夹中除C# 获取除.zip之外的所有文件,c#,file,loops,zip,C#,File,Loops,Zip,这可能是一个简单的问题,但如何获取文件夹中除.zip扩展名以外的所有文件。我有一个foreach循环,如下所示: foreach (DirectoryInfo directory in directories) { foreach (FileInfo file in directory.GetFiles("*.*")) { } } 我应该在第二个循环中执行if语句并检查if(file.Name.contains(“zip”)),然后继续,还是有更好的方法?FileInf
.zip
扩展名以外的所有文件。我有一个foreach
循环,如下所示:
foreach (DirectoryInfo directory in directories)
{
foreach (FileInfo file in directory.GetFiles("*.*"))
{
}
}
我应该在第二个循环中执行
if
语句并检查if(file.Name.contains(“zip”)),然后继续,还是有更好的方法?FileInfo
有一个属性扩展名
,它将为您提供表示每个文件扩展名的字符串
编辑:
您可以使用此LINQ查询简化代码:
IEnumerable<FileInfo> files = directory.GetFiles("*.*").Where(file => !string.Equals(file.Extension, ".zip", StringComparison.InvariantCultureIgnoreCase));
IEnumerable files=directory.GetFiles(“*”).Where(file=>!string.Equals(file.Extension,.zip,.StringComparison.InvariantCultureIgnoreCase));
不要检查名称中的zip。使用FileInfo.Extension
或在Path.GetExtension(filename)
中传递名称。它不应该是。zip
您可以尝试此代码
public staticList<FileInfo> GetFiles(string folder, string includeMask, string excludeMask, SortOrder sortOrder, SearchOption searchOption)
{
DirectoryInfo folderDirectoryInfo = newDirectoryInfo(folder);
List<FileInfo> files = newList<FileInfo>(folderDirectoryInfo.GetFiles(includeMask, searchOption));
stringexcludeMaskRegEx = FileSystemHelper.WildcardToRegex(excludeMask);
// exclude files
files = (fromfile infiles
where!Regex.IsMatch(file.Name, excludeMaskRegEx)
selectfile).ToList<FileInfo>();
if(files.Count > 0)
{
switch(sortOrder)
{
//somecode
}
}
returnfiles;
}
publicstaticlist GetFiles(字符串文件夹、字符串includeMask、字符串excludeMask、排序器排序器、搜索选项SearchOption)
{
DirectoryInfo folderDirectoryInfo=newDirectoryInfo(文件夹);
List files=newList(folderDirectoryInfo.GetFiles(includeMask,searchOption));
stringexcludeMaskRegEx=FileSystemHelper.WildcardToRegex(excludeMask);
//排除文件
文件=(从文件填充)
where!Regex.IsMatch(file.Name,excludeMaskRegEx)
选择file.ToList();
如果(files.Count>0)
{
开关(分拣机)
{
//一些代码
}
}
返回文件;
}
在.NET 4.0以后的版本中,您可以使用:
List files=Directory.EnumerateFiles(“C:\\temp”、“***”,
SearchOption.AllDirectories)
.Where(n=>Path.GetExtension(n)!=“.txt”).ToList();
使用LINQ:
static List<string> GetNonZipFiles(string path)
{
return Directory.GetFiles(path).Where(x => !x.EndsWith(".zip")).ToList();
}
静态列表GetNonZipFiles(字符串路径)
{
返回目录.GetFiles(path).Where(x=>!x.EndsWith(“.zip”)).ToList();
}
问题是,你将不包括ZIP.TX.OOPS。是的,我没有想到不幸的是不能使用LINQ,因为它是框架2,但是你的第一个建议起了作用。谢谢:)
static List<string> GetNonZipFiles(string path)
{
return Directory.GetFiles(path).Where(x => !x.EndsWith(".zip")).ToList();
}