如何检查文件夹是否为空?
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();
}
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();
}