如何检查文件夹是否为空?

How can I check if folders are empty?

public Form1()
        {
            InitializeComponent();

            if (textBoxRadarPath.Text != "")
            {
                if (!Directory.Exists(textBoxRadarPath.Text))
                {
                    Directory.CreateDirectory(textBoxRadarPath.Text);

                    btnStart.Enabled = true;
                }
            }

            if (textBoxSatellitePath.Text != "")
            {
                if (!Directory.Exists(textBoxSatellitePath.Text))
                {
                    Directory.CreateDirectory(textBoxSatellitePath.Text);

                    btnStart.Enabled = true;
                }
            }

            CheckIfImagesExist();
        }

我正在检查 textBoxRadarPath.Text 和 textBoxSatellitePath.Text 中的文件夹是否存在,如果不存在则创建它们。然后我调用方法 CheckIfImagesExist();

问题出在文件夹CheckIfImagesExist();我也在尝试获取文件: 该方法中有更多代码,但重要的是 GetImagesFiles 方法

private void CheckIfImagesExist()
        {
            GetImagesFiles();
        }

并在 GetImagesFiles

private void GetImagesFiles()
        {
            if (textBoxRadarPath.Text != "" || textBoxSatellitePath.Text != "")
            {
                if (Directory.Exists(textBoxRadarPath.Text))
                {
                    if (checkBoxGetImages)
                    {
                        filesRadar = System.IO.Directory.GetFiles(textBoxRadarPath.Text,
                                      "*.gif", SearchOption.AllDirectories).OrderBy(x => x).ToArray();
                    }
                    else
                    {
                        var t = new DirectoryInfo(textBoxRadarPath.Text).GetDirectories()
                       .OrderByDescending(d => d.LastWriteTimeUtc).First();

                        filesRadar = System.IO.Directory.GetFiles(t.FullName,
                                      "*.gif", SearchOption.AllDirectories).OrderBy(x => x).ToArray();
                    }

                    Array.Sort(filesRadar, new MyComparer(true));
                }

                if (Directory.Exists(textBoxSatellitePath.Text))
                {
                    if (checkBoxGetImages)
                    {
                        filesSatellite = System.IO.Directory.GetFiles(textBoxSatellitePath.Text,
                                                      "*.gif", SearchOption.AllDirectories).OrderBy(x => x).ToArray();
                    }
                    else
                    {
                        var t = new DirectoryInfo(textBoxSatellitePath.Text).GetDirectories()
                       .OrderByDescending(d => d.LastWriteTimeUtc).First();

                        filesSatellite = System.IO.Directory.GetFiles(t.FullName,
                                                 "*.gif", SearchOption.AllDirectories).OrderBy(x => x).ToArray();
                    }

                    Array.Sort(filesSatellite, new MyComparer(false));
                }
            }
        }

我在这里尝试从 textBoxRadarPath.Text 和 textBoxSatellitePath.Text

下的第一个子文件夹中获取图像

问题是如果目录 textBoxRadarPath.Text 和 textBoxSatellitePath.Text 不存在所以它们已经创建但它们是空的所以我在行上遇到异常

var t = new DirectoryInfo(textBoxRadarPath.Text).GetDirectories()
                           .OrderByDescending(d => d.LastWriteTimeUtc).First();

因为这两个目录刚刚创建或者是空的

如果目录为空,我如何检查构造函数不调用 CheckIfImagesExist() 方法?

只有里面有子文件夹才调用方法CheckIfImagesExist()

异常信息:

System.InvalidOperationException: 'Sequence contains no elements'

在线:

var t = new DirectoryInfo(textBoxRadarPath.Text).GetDirectories()
                       .OrderByDescending(d => d.LastWriteTimeUtc).First();

此屏幕截图显示了硬盘上文件夹结构的示例。

当您不确定是否会有结果项时使用 FirstOrDefault

var t = new DirectoryInfo(textBoxRadarPath.Text)
        .GetDirectories()
        .OrderByDescending(d => d.LastWriteTimeUtc)
        .FirstOrDefault();  // <- this will return null if there are no entries

然后在开始检查文件之前,请确保找到目录。

if (t != null)
{
    filesSatellite = System.IO.Directory
            .GetFiles(t.FullName, "*.gif", SearchOption.AllDirectories)
            .OrderBy(x => x)
            .ToArray();
}