[英]Get all files except .zip
這可能是一個簡單的問題,但我如何獲得除.zip
擴展名以外的文件夾中的所有文件。 我有一個foreach
循環如下:
foreach (DirectoryInfo directory in directories)
{
foreach (FileInfo file in directory.GetFiles("*.*"))
{
}
}
我應該在第二個循環中執行if
語句並檢查if (file.Name.contains("zip")) then continue
還是有更好的方法?
FileInfo
有一個屬性Extension
,它將為您提供表示每個文件的擴展名的字符串。
編輯:您可以使用此LINQ查詢來簡化您的代碼:
IEnumerable<FileInfo> files = directory.GetFiles("*.*").Where(file => !string.Equals(file.Extension, ".zip", StringComparison.InvariantCultureIgnoreCase));
在.NET 4.0及更高版本中,您可以使用Directory.EnumerateFiles
:
List<string> files = Directory.EnumerateFiles("C:\\temp", "*.*",
SearchOption.AllDirectories)
.Where(n => Path.GetExtension(n) != ".txt").ToList();
不要檢查名稱中的zip。 在Path.GetExtension(filename)
使用FileInfo.Extension
或Pass名稱,它不應該是.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;
}
使用LINQ:
static List<string> GetNonZipFiles(string path)
{
return Directory.GetFiles(path).Where(x => !x.EndsWith(".zip")).ToList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.