簡體   English   中英

獲取除.zip之外的所有文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM