2012-03-30 2 views
15

파일이 정상적으로 발견 되더라도 다음 코드는 작동하지 않는 것 같습니다.ImageIO.read가 오류를 반환하지 않고 NULL을 반환합니다.

images = new BufferedImage[32]; 
    FileInputStream fis = null; 
    for (int i = 0; i < 32; i++) { 
     File file = new File("tiles\\"+i+".bmp"); 
     if (!file.exists()){ 
      System.out.println("File "+i+" failed"); 
     } 
     try { 
      fis = new FileInputStream(file); 
     } catch (FileNotFoundException e) { 
      System.err.println(e + "" + i); 
     } 
     try { 
      images[i] = ImageIO.read(fis); 
     } catch (IOException e) { 
      System.err.println(e + "" + i); 
     } 
     if (images[i] == null) { 
      System.out.println("Image "+i+" failed"); 
     } 
    } 

미리 도움을 청하십시오.

편집 : 그 결과는 Graphics.drawImage (images [0]);하려고 시도하고 나를 null 포인터 예외를 제공합니다. 이 코드는 여기까지 완료되었습니다.

수정 : 제안 된대로 if (! file.exists())를 이동하고 파일을 입력 스트림으로 래핑했습니다.

+3

[RTFM] (http://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#read%28java.io.File%29) – mre

+0

결과를 설명해 주시겠습니까? 야생 추측 : 부정확 한 경로 ... –

+0

왜 테스트를하지 않습니까? (! file.exists()) System.out.println ("File"+ i + "failed"); 읽기 전에 ? –

답변

7

ImageIO.read (file);는 등록되지 않은 경우 null을 반환합니다. ImageReader을 찾을 수 없습니다. ImageReader을 등록했는지 확인하십시오.

나는 당신이 단지 FileInputStream에에 파일을 포장하고 읽기()에 전달하기 위해 필요한이 코드는 당신에게

File file = new File("bear.jpg"); // I have bear.jpg in my working directory 
    FileInputStream fis = new FileInputStream(file); 
    BufferedImage image = ImageIO.read(fis); //reading the image file 

을 도울 수 있다고 생각

+0

나는 아직도 제대로하지 못하고 있지만 내가 한 일은 실패했다. 변경된 내용을 보여주기 위해 위의 코드를 변경했습니다. – Naberius

+0

디스크의 이미지 파일 이름은 무엇이라고 말할 수 있습니까? –

+0

@Naberius 디스크의 이미지 파일 이름은 무엇이라고 말할 수 있습니까? 제 경우에는 완벽하게 작동합니다. –

0

을 포장 시도는 BufferedInputStream을에의 InputStream :

FIS는 = 새로운 FileInputStream에 (파일); ==> 새로운 BufferedInputStream (새로운 FileInputStream (file));

관련 문제