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() ?
Only if there are child folders inside then call the method CheckIfImagesExist()
The exception message :
System.InvalidOperationException: 'Sequence contains no elements'
On the line :
var t = new DirectoryInfo(textBoxRadarPath.Text).GetDirectories()
.OrderByDescending(d => d.LastWriteTimeUtc).First();
This screenshot show example of the folders structure on the hard disk.

uj5u.com熱心網友回復:
當您不確定是否會有結果項時使用 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();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/347998.html
