저는 게임의 다양한 요소에 대한 이미지를 읽는 데이터 기반 디자인을 사용하여 간단한 게임을 작성합니다. 따라서 필자는 파일을 읽어 들이고, 허용 가능한 이미지 형식인지 확인하고, 파일을 사용하여 새로운 Sprite (필자가 작성한 클래스)를 작성하는 파서를 작성했습니다.Java - 이미지 읽기 (IIOException : ImageInputStream을 만들 수 없음)
아래 예에서와 같이 ImageIO.read()를 사용하여 파일을 읽었습니다.
javax.imageio.IIOException: Can't create an ImageInputStream!
at javax.imageio.ImageIO.read(ImageIO.java:1280)
at edu.moravian.utilities.dataParsers.GraphicsDataParser.readInSprites(GraphicsDataParser.java:53)
나는이 원인을 무슨 아이디어가있어 다음과 같이
toAdd = new Sprite(ImageIO.read(targetFile));
예외의 스택 트레이스이다. 응용 프로그램이 멀티 스레드가 아니며 이미지가 올바른 디렉토리에 있고 존재하는 것으로 확인되며 이미지에 액세스하는 데 필요한 권한이 있습니다.
무엇이 누락 되었습니까?
정규 입력 스트림을 사용하여 파일을 열어 보았습니까? 그리고 그것은 존재합니까? –
파일에 존재 함을 확인하는 코드에 체크를 추가했습니다. 어떻게 정규 입력 스트림을 사용하여 이미지를 여는 것이 좋을까요? 단순히 ImageIO.read()를 사용하는 것이 가장 큰 매력은 입력 스트림을 직접 사용할 필요가 없다는 것입니다. –
실제로 - 내 선택이 될 것입니다. ImageIO 비트는 매우 높은 수준입니다 (오류 메시지입니다.) 더 간단한 InputStream을 살펴보면 잘못된 점을 알 수 있습니다. 이런 경우에는 파일을 열어보고 내용을 탐색하여 잘못된 것이 있는지 (디스크 I/O, 사용 권한 등) 확인하십시오. 또 다른 할 일은 당신이 * 알 수있는 정적 인 자원을 사용하여 거기에서 가져가는 것입니다. 죄송합니다. 더 이상 알려줄 수 없습니다. 이런 종류의 실수는 결코 경험하지 못했습니다. –