当我将file.FullName(不是我调试过的null)放入字符串数组时,有些为null,有些不是

因此,举例来说,我的图像路径为“ D:\ ...”。 file.FullName是此路径,但有时当我将该路径放入数组时 该元素为null,但我不知道为什么。

假设我的文件夹中有100张图片,那么其名称的10%为空 在数组中,但我检入了调试文件。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++;
            }
raincraft 回答:当我将file.FullName(不是我调试过的null)放入字符串数组时,有些为null,有些不是

更改行的顺序:

this.myImageList.Images.Add(Image.FromFile(file.FullName));

names[z] = file.FullName;

以使名称[z]被分配文件名,然后由于加载图像文件的问题而导致异常将您带到catch块。

或者考虑添加一个finally{ names[z] = file.FullName; }块,以便即使存在异常,名称数组也总是获得文件名。

您将在ImageList中显示不同数量的项目,因为将永远不会添加某些文件,但是您的文件名列表至少会完整

,

即使错误,您的代码仍在递增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); 
}

为了至少获得适当的错误以进行进一步调试

本文链接:https://www.f2er.com/3100093.html

大家都在问