Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C存在不允许的文件_C#_File_Detect - Fatal编程技术网

C# C存在不允许的文件

C# C存在不允许的文件,c#,file,detect,C#,File,Detect,我有一个包含以下文件的文件夹: file1.exe 文件2.dll 我要检查此文件夹中是否存在无关文件。例如,如果我在这个文件夹中创建examplefile.exe,它必须给我一个错误,必须只有上面列出的文件。所以我创建了所需的文件字符串: string[] only_these_files = { "file1.exe", "file2.dll" }; 现在我需要搜索无关文件,但如何搜索?马上谢谢你 我试过这个代码,但我不知道如何检查它 string[] only_the

我有一个包含以下文件的文件夹:

file1.exe 文件2.dll 我要检查此文件夹中是否存在无关文件。例如,如果我在这个文件夹中创建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);
            }

试试这个,因为你只需要检查两个文件,顺便说一句,使用arraylist进行编码是一个糟糕的惯例

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() )
                               ;

不要要求社区为您编写代码。在修复您自己的代码时寻求帮助。将问题分解为多个部分,然后带着您不知道如何处理的特定部分返回此处:1获取文件夹中所有文件的列表2查看文件列表中的任何文件是否不是允许的两个文件之一3向用户报告错误消息。我尝试了此代码,但我不知道如何检查。你是什么意思?@sstan,idk如何检查是无关的files@Dewagg:当前代码有什么问题。它不起作用了?如果没有,请说明它有什么问题。具体点。据我所知,OP不仅仅想检查文件是否存在,还想确保该目录中没有任何其他文件。例如,System.IO.directory myDir=getmydirectory;int count=myDir.GetFiles.Length;然后他可以检查计数是否为2我宁愿看一个列表,然后每天直接比较一系列的单个项目。。。它可以扩展。Noooooop,我只想写允许的文件,如果系统发现无关的文件来向我显示消息对不起,我不是英国人,我愿意,但他是一个初学者,一个快速的硬修复应该可以,我guess@sstan接得好,他没有看完所有的代码谢谢,这对我有用