获取IOException,无法找到任何理由

时间:2011-08-23 20:43:48

标签: java path ioexception

我尝试读取特定像素的rgb但是我得到了IOException 我找不到任何共鸣,但我试图从这个网站运行程序 link 但我仍然得到IOException 那么这可能是因为JRE或我的IDE是Eclipse吗?

import java.io.*;
import java.awt.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;

public class GetPixelColor
{
  public static void main(String args[]) throws IOException{
  File file= new File("rockface.jpg");
  BufferedImage image = ImageIO.read(file);
  // Getting pixel color by position x=100 and y=40 
  int clr=  image.getRGB(100,40); 
  int  red   = (clr & 0x00ff0000) >> 16;
  int  green = (clr & 0x0000ff00) >> 8;
  int  blue  =  clr & 0x000000ff;
  System.out.println("Red Color value = "+ red);
  System.out.println("Green Color value = "+ green);
  System.out.println("Blue Color value = "+ blue);
  }
}

4 个答案:

答案 0 :(得分:2)

这可能是因为您链接的程序正在引用您未在路径中的图像。

在File构造函数之后添加以下行以检查您要查找的文件是否存在:

File file= new File("rockface.jpg");
if (file.exists()){
   //OK
}else{
   //you should have I/O Exception when the code reach ImageIO.read(file);

}

答案 1 :(得分:1)

根据JavaDoc,这(可能)是抛出IOException的方法:

ImageIO#read(File f)

来自文档:

  

抛出:

     

IllegalArgumentException - 如果输入为空。

     

IOException - 如果在阅读期间发生错误。

这很可能是因为无法找到您指定的File。尝试将其移动到类路径或项目根目录。

答案 2 :(得分:0)

我记不清确切的细节,但我听说其他人在用Eclipse询问IOExceptions。

可能的情况是您的文件不在项目的运行目录中。我不记得如何设置eclipse,但是尝试将文件移动到包含.class文件的任何文件夹中,或者只是以文件的位置来播放。

答案 3 :(得分:0)

解决方案是指定绝对路径(假设您使用的窗口为c:.... \ etc ..)否则您将不得不使用相对路径。
要知道您的应用程序在哪个文件夹中搜索,您可以使用:

  

System.getProperty( “user.dir来”);