C# 从 bool 移动文件

C# Move file from bool

我有这个代码:

bool containsNonAllowedCLEOFiles = directory.EnumerateFiles().Any(file => !allowedCLEOFiles.Contains(file.Name));

if (containsNonAllowedCLEOFiles == true)
{
    DialogResult existsunallowedcleofiles = MessageBox.Show("Extraneous files found! Please remove them", "Error", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); 
    if(existsunallowedcleofiles == DialogResult.OK)
    {
        //move files
    }
    return;
}

如果存在 extraneous/unallowed 个文件,我会收到此消息。但是当我单击“确定”时,我想将这些文件移动到另一个目录。我该怎么做?我不想移动所有文件,只想移动无关的/不允许的文件。

P.S 我知道我必须使用 File.Move("file", "directory");要么 类似这样的东西,但我不知道如何获取该文件名..等等

您可以使用:

var filesMatchingPattern = System.IO.Directory.GetFiles(DIRECTORY, PATTERN);

嗯,听起来你应该先找到那些文件,然后检查是否有:

var invalidFiles = directory.EnumerateFiles()
                            .Where(file => !allowedCLEOFiles.Contains(file.Name));
                            .ToList();
if (invalidFiles.Any())
{
    // ... Prompt user as before ...
    foreach (var invalidFile in invalidFiles)
    {
        File.Move(...);
    }
}

尝试

foreach (var file in directory.EnumerateFiles().Where(file => !allowedCLEOFiles.Contains(file.Name)) {
    File.Move(file.Name, destination);
}

这个怎么样:

var disallowedFiles = directory.EnumerateFiles().Where(file => allowedCLEOFiles.Contains(file.Name)).ToList();

if (disallowedFiles.Any())
{
    DialogResult existsunallowedcleofiles = MessageBox.Show("Extraneous files found! Please remove them", "Error", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); 
    if(existsunallowedcleofiles == DialogResult.OK)
    {
        disallowedFiles.ForEach(file => File.Move(file.Name, "destination"));
    }
    return;
}