C# 存在不允许的文件
C# is exists unallowed files
我有 个文件夹,其中包含这些文件:
- file1.exe
- file2.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);
}
试试这个,因为你只需要检查两个文件,顺便说一句,使用数组列表是一种糟糕的编码约定
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() )
;
我有 个文件夹,其中包含这些文件:
- file1.exe
- file2.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);
}
试试这个,因为你只需要检查两个文件,顺便说一句,使用数组列表是一种糟糕的编码约定
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() )
;