내 응용 프로그램에서 ImageIO
을 사용하여 BufferedImage
을 PNG 파일로 저장하려고했습니다. 파일은 사용자가 선택하므로 문제가 될 수있는 오류 (예 : 사용자가 쓰기 권한이없는 위치에 저장하려고 시도하는 경우)에 대응해야합니다. 그러나 나는 발생하는 IOException
을 잡을 수 없습니다.Java ImageIO : Exception Unirdy
다음 코드는 문제를 보여줍니다. "/ foo"에 저장하려고하면 루트 디렉토리에 쓰기 권한이 없기 때문에 * nix 시스템에서 대부분의 사용자에게 예외가 발생합니다.
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class IOTest {
public static void main(String[] args) {
BufferedImage img = new BufferedImage(640, 480,
BufferedImage.TYPE_INT_RGB);
try {
File f = new File("/foo");
ImageIO.write(img, "png", f);
} catch (IOException e) {
System.out.println("Caught IOException!");
}
}
}
그러나 예외는 발견되지 않습니다. 출력 : FileNotFoundException
그래서이 잡힐한다 IOException
의 서브 클래스입니다
java.io.FileNotFoundException: /foo (Permission denied)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:233)
at javax.imageio.stream.FileImageOutputStream.<init>(FileImageOutputStream.java:69)
at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(FileImageOutputStreamSpi.java:55)
at javax.imageio.ImageIO.createImageOutputStream(ImageIO.java:419)
at javax.imageio.ImageIO.write(ImageIO.java:1530)
at IOTest.main(IOTest.java:16)
Exception in thread "main" java.lang.NullPointerException
at javax.imageio.ImageIO.write(ImageIO.java:1538)
at IOTest.main(IOTest.java:16)
참고. 두 번째 catch 블록도 도움이되지 않았습니다.
catch (FileNotFoundException e) {
System.out.println("Caught FileNotFoundException!");
} catch (IOException e) {
System.out.println("Caught IOException!");
}
내가 뭘 잘못하고 있니?
귀하의 결론을 정당화하는 "원인"이 없습니다. –