从我之前的question开始,我的程序没有检测到在特定目录中创建的300张图像;相反,它只检测desktop.ini
,但事实并非如此,因为我可以看到文件已在所述目录中创建并且确实存在。
有人可以解释为什么会发生这种情况,因为下次我运行该程序时,它似乎工作正常吗?
在第一次运行的目录中检测到某些内容的唯一方法是在编译和执行程序之前目录中至少存在一个文件。
非常感谢。
更新:检测到文件如下:
//Default greyscale image directory (to convert from greyscale to binary).
static File dirGrey = new File("test_images\\Greyscale");
//Array of greyscale image filenames.
static File imgListGrey[] = dirGrey.listFiles();
答案 0 :(得分:2)
在不知道你是如何制作图像的情况下,这个问题类似于“现在桌子下面有多少只小猫?”
您是自己创建文件的吗?如果是这样,你在创建这些文件时是否关闭了任何文件句柄?
答案 1 :(得分:1)
您正在static
数组中创建文件列表,并且在Java类加载器加载包含该数组的类时创建该文件列表,这可能是在创建映像文件之前。这就是数组包含过时列表的原因。
static
,对于纯函数(Math.sqrt()
)和其他一些特殊情况,它们对常量(永不改变的东西,如42)非常有用。当你使用它时,你必须学习所有棘手的初始化顺序。否则,只需坚持使用非静态变量。