Javax ImageIO IIOException显然没有原因。
大家好,我有一个Java问题。对于我的高级研究班,我已经差不多完成了,但是我只需要分析生成的图像中的一些数据即可。我不想将其标记为家庭作业,因为它不是任何必需作业的一部分……这是我自己想出的结果。我编写了一个程序,可以逐像素比较两个图像。它对两个目录中的所有.bmp文件执行此操作。现在,我的程序将文件名读取到String数组中,并检查了所有文件名的值,因此我知道最初可以很好地访问目录和文件名。这是有问题的代码:
public static void main(String[]args) throws IOException
{
File actualDir = new File(\"C:\\\\Users\\\\Rowe\\\\Desktop\\\\testExpect\");
String actualFiles[] = actualDir.list();
File expectedDir = new File(\"C:\\\\Users\\\\Rowe\\\\Desktop\\\\testExpect2\");
String expectedFiles[] = expectedDir.list();
int[][] stats = new int[actualFiles.length][6]; // Holds all info
//Columns, Rows, Total, redMatches, shouldaBeenRed, badRed
for(int i = 0; i < actualFiles.length; i++)
{
BufferedImage actualImage = null;
System.out.println(actualFiles[i]); //THIS PRINTS PROPERLY
System.out.println(System.getProperty(\"user.dir\")); //FOR TESTING
actualImage = ImageIO.read(new File(\"C:\\\\Users\\\\Rowe\\\\Desktop\\\\testExpect\\\\\"+actualFiles[i])); //ERROR HERE
BufferedImage expectedImage = null;
expectedImage = ImageIO.read(new File(\"C:\\\\Users\\\\Rowe\\\\Desktop\\\\testExpect2\\\\\"+expectedFiles[i])); //THIS IMAGE WORKS
...rest of code
现在,当我将目录更改为相同时,程序将运行,并检测到所有像素都是100%相同的(因为它应该如此,所以我知道该程序可以执行我想要的操作)。这是错误:
Exception in thread \"main\" javax.imageio.IIOException: Can\'t read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at PixelCompare.main(PixelCompare.java:22)
我尝试了其他目录都无济于事。可能是有关.bmp文件的问题吗?是什么使一组BMP读得很好而另一组不起作用?我可以在其他程序中打开所有需要的文件,因此它们没有损坏。所有属性似乎都是相同的。一个目录是用Gimp手工制作的(这些读法很好),而另一个目录是由基于Java的程序生成的。这些可以在Gimp,Paint,Photoshop等中读取,但不会在我的代码中读取。
非常感谢任何帮助,谢谢!
编辑:忘记使用还原的代码...我搞砸了,然后发布了一些错误的版本。进行了修改,以显示原本带有功能代码的问题。为了进一步描述问题:如果您将两个目录都更改为在testExpect2文件夹中查找ExpectedFiles []中的文件列表,它将成功运行。另外,“ 3”在错误发生之前会打印正确的文件名,因此我知道正确的文件已被读取到String数组中。
没有找到相关结果
已邀请:
2 个回复
襄挟款籍
让我们将目录缩短为
。您的代码将产生如下路径
不是您想要的:
您忘记了路径分隔符。 最好将两个File-arg构造函数用于
:
希望有帮助!
死簇