2

Java コードで画像を読み込むのに問題があります。このコードが入っているクラスと同じパッケージに画像 i.png があります。これがコードです。

    Image img;
    try
    {
        img = ImageIO.read(new File("i.png"));
    }
    catch(IOException e)
    {
    }

このコードを実行すると、IOException がスローされ、入力ファイルを読み取れないと表示されます。
なぜその例外がスローされるのか誰か知っていますか?コードが例外をスローするという悪い言い方で申し訳ありませんが、コードの後半でそれを使用できないことは明らかです(それは私が11:30まで起きているために得られるものです)
ありがとう手伝い!

4

2 に答える 2

2

アクセスを簡単にするためだけに、コードにパスをハードコーディングしたり、リソースを同じパッケージに保持したりするのは悪い習慣です。ハードコードされたパスを指定するか、getResourceAsStreamを使用できます

getResourceAsStream のドキュメントによると

指定された名前のリソースを検索します。リソースとは、コードの場所に依存しない方法でクラス コードからアクセスできるデータ (画像、音声、テキストなど) です。

これは、コードで必要なものです。

この回答を読んで、ファイルにアクセスする方法とリソースにアクセスするクラスローダーの方法をもう少し明確にしてください。

したがって、いくつかの変更を加えると、コードが次のように変更されたときに機能します-

public class TestIt {
public static void main(String[] args) throws IOException {

Image img = null;
img = ImageIO.read(TestIt.class.getResourceAsStream( "i.png" ));
img.getGraphics();
System.out.println(img);
}

}

getResourceAsStream メソッドの使用に注意してください。

HTH

于 2013-04-13T12:59:53.260 に答える
0

img = ImageIO.read(new File("i.png"))を実行した後もimg変数が null のまま であるため、null ポインター例外が発生しています。null のままであるため、コードでさらに使用しようとすると、null ポインター例外が発生します。

これがあなたの解決策です:

BufferedImage img = ImageIO.read(new File("i.png"));

よろしく、ラヴィ

于 2013-04-13T12:17:44.293 に答える