C# 存在不允许的文件

C# is exists unallowed files

我有 个文件夹,其中包含这些文件:

我想检查此文件夹中是否存在无关文件。例如,如果我在这个文件夹中创建 examplefile.exe 它一定会给我一个错误,必须只有上面列出的文件。所以我创建了所需的文件字符串:

string[] only_these_files = { 
    "file1.exe", 
    "file2.dll"
};

现在我需要搜索无关的文件,但是怎么办?立即感谢。

我试过这段代码,但我不知道如何检查它。

string[] only_these_files = { 
            "image1.png", 
            "image2.png", 
            "image3.png",
            "image4.png",
            "image5.png"
        };
        string[] fileEntries = Directory.GetFiles(@"C:\Users\Dewagg\Desktop\test\");

        List<String> badFiles = new List<string>();

        foreach (string fileName in fileEntries)
            if (!only_these_files.Contains(fileName))
            {
                badFiles.Add(fileName);
            }

试试这个,因为你只需要检查两个文件,顺便说一句,使用数组列表是一种糟糕的编码约定

try{
   if (!File.Exists("TextFile1.txt"))
     throw new FileNotFoundException();
}
catch(FileNotFoundException e)
{
   // your message here.
}

如果你想检查你的代码,那么你总是可以在其中放置一个断点并观察执行。您希望在桌面上创建文件以便了解预期结果。

如果您想验证没有任何坏文件,那么您可以检查坏文件列表的大小。

所以你想要这样的东西:

if(badFiles.Count>0)//based off your sample code with png's
{
     //notify user
     MessageBox.Show("Bad files were found"); //or create anonymous function to display bad files
     // or Console.WriteLine("Bad files were found");
}

这不完全是火箭科学:像这样的事情会让你:

HashSet<string> allowedFiles = new HashSet<string>( StringComparer.OrdinalIgnoreCase )
{
  "file1.exe" ,
  "file2.dll" ,
};
DirectoryInfo directory = new DirectoryInfo( @"c:\foo\bar" ) ;

bool containsNonAllowedFiles = directory
                               .EnumerateFiles( @"C\foo\bar" )
                               .Any( fi => !allowedFiles.Contains( fi.Name ) )
                               ;
bool containsAllAllowedFiles = allowedFiles
                               .All( fn => directory.EnumerateFiles( fn ).Any() )
                               ;