当我将 file.FullName(我调试的不是 null)放入字符串数组时,有些是 null,有些不是
When i put file.FullName(which is not null i debugged) into an string array some are null and some are not
所以让我们举个例子,我的图像路径是 "D:\..." 任何东西。
file.FullName 是这条路径,但有时当我将该路径放入数组时
该元素为空,但我不知道为什么。
假设我的文件夹中有 100 张图片,那么其中 10% 的名称为空
在数组中,但我检查了 debuggin file.FullName 永远不会为空。
有人知道为什么会这样吗?
还是我忽略了什么?
int z = 0;
foreach (FileInfo file in Variables.dir.GetFiles())
{
try
{
this.myImageList.Images.Add(Image.FromFile(file.FullName));
names[z] = file.FullName;
}
catch
{
Console.WriteLine("This is not an image file");
}
z++;
}
您的代码即使出错,仍在递增 z
。将 z
移动到 try{}
之内,而不是 catch{}
/ finally{}
之外。这将导致 z
仅在程序仅找到它正在查找的文件/符合您的条件(即图像文件)时才增加。
int z = 0;
foreach (FileInfo file in Variables.dir.GetFiles())
{
try
{
this.myImageList.Images.Add(Image.FromFile(file.FullName));
names[z] = file.FullName;
z++;
}
catch
{
Console.WriteLine("This is not an image file");
}
}
您的程序可能在未查看调试文件路径时查找隐藏文件或其他文件。您的代码为 catch{}
的多种原因,但如果不添加则不确定:
try{ ... }
catch(Exception ex)
{
Console.WriteLine("This is not an image file: \n" + ex);
}
为了至少得到正确的错误以进一步调试
要么更改行的顺序:
this.myImageList.Images.Add(Image.FromFile(file.FullName));
和
names[z] = file.FullName;
以便在异常将您发送到 catch
块之前为 names[z] 分配文件名,因为加载图像文件时出现问题。
或者考虑添加一个 finally{ names[z] = file.FullName; }
块,这样即使出现异常,名称数组也始终获取文件名。
你最终会在你的 ImageList 中得到不同数量的项目,因为一些文件永远不会被添加,但你的文件名列表至少是完整的
所以让我们举个例子,我的图像路径是 "D:\..." 任何东西。 file.FullName 是这条路径,但有时当我将该路径放入数组时 该元素为空,但我不知道为什么。
假设我的文件夹中有 100 张图片,那么其中 10% 的名称为空 在数组中,但我检查了 debuggin file.FullName 永远不会为空。
有人知道为什么会这样吗? 还是我忽略了什么?
int z = 0;
foreach (FileInfo file in Variables.dir.GetFiles())
{
try
{
this.myImageList.Images.Add(Image.FromFile(file.FullName));
names[z] = file.FullName;
}
catch
{
Console.WriteLine("This is not an image file");
}
z++;
}
您的代码即使出错,仍在递增 z
。将 z
移动到 try{}
之内,而不是 catch{}
/ finally{}
之外。这将导致 z
仅在程序仅找到它正在查找的文件/符合您的条件(即图像文件)时才增加。
int z = 0;
foreach (FileInfo file in Variables.dir.GetFiles())
{
try
{
this.myImageList.Images.Add(Image.FromFile(file.FullName));
names[z] = file.FullName;
z++;
}
catch
{
Console.WriteLine("This is not an image file");
}
}
您的程序可能在未查看调试文件路径时查找隐藏文件或其他文件。您的代码为 catch{}
的多种原因,但如果不添加则不确定:
try{ ... }
catch(Exception ex)
{
Console.WriteLine("This is not an image file: \n" + ex);
}
为了至少得到正确的错误以进一步调试
要么更改行的顺序:
this.myImageList.Images.Add(Image.FromFile(file.FullName));
和
names[z] = file.FullName;
以便在异常将您发送到 catch
块之前为 names[z] 分配文件名,因为加载图像文件时出现问题。
或者考虑添加一个 finally{ names[z] = file.FullName; }
块,这样即使出现异常,名称数组也始终获取文件名。
你最终会在你的 ImageList 中得到不同数量的项目,因为一些文件永远不会被添加,但你的文件名列表至少是完整的