0

Java で、オーディオ ファイルを再生して画像を表示する小さなプログラムをプログラムしました
。最初に、パスを使用して最終的な文字列を作成し、次にファイル オブジェクトを作成しました。
少なくとも、返された配列を「トラック」変数に保存します。これは私のコードです:

private static final String PATH = "../src/audio/";
private static final File FILE = new File(PATH);
tracks = liesAudioDateien(file);

private AudioClip[] liesAudioDateien (File inputFile) {
    File[] dateFileArray;
    AudioClip[] tracks;
    dateFileArray = inputFile.listFiles();
    tracks = new AudioClip[dateFileArray.length];
    for (int i = 0; i < tracks.length; i++) {
        if (dateFileArray[i].isFile()) {
            try {
                tracks[i] = Applet.newAudioClip(dateFileArray[i].toURL());
            } catch (IOException ex) {
                System.err.println("Oops!: -- " + ex.toString());
            }
        }

    }
    return tracks;   

このコードを実行すると、エラーが発生します。

Exception in thread "main" java.lang.NullPointerException
    at source.Sound.liesAudioDateien(Sound.java:32)

Sound.java:32:回線です
tracks = new AudioClip[dateFileArray.length];

絶対パスで試してみると、うまくいきます!私は何を間違っていますか?

4

4 に答える 4

0

パスは相対パスであり、現在の作業ディレクトリに対して相対的に解決されます。現在の作業ディレクトリは、あなたが思っているものではありません。

前にこれを行うようにしてくださいinputFile.listFiles()

System.out.println(inputFile.getAbsolutePath());

そして、絶対パスがどうあるべきか Javaが考えるものを見てください。

于 2013-03-16T17:43:24.797 に答える
0

File.listFilesnull抽象パス名がディレクトリを示さない場合に戻ります。

ではないinputFile ことを確認するために、 がディレクトリを示していることを確認する必要があります。dateFileArraynull

于 2013-03-16T18:10:26.570 に答える
0

"../src/audio/"に変更"./src/audio/"

于 2013-03-16T17:52:26.820 に答える