0

在java中,我编写了一个小程序来播放音频文件和播种图片:
首先我用路径制作了一个最终的字符串,然后我制作了一个文件对象。
至少我将返回的数组保存在我的“tracks”变量中。这是我的代码:

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

更改"../src/audio/""./src/audio/"

于 2013-03-16T17:52:26.820 回答
0

File.listFilesnull如果抽象路径名不表示目录,则返回。

您需要确保inputFile does表示一个目录以确保dateFileArrayis not null

于 2013-03-16T18:10:26.570 回答
0

尝试使用 File.separator 代替正/反斜杠。前任:

String soundDir = "." + File.separator + "folderName" + File.separator;
String fileName = "sound.wav";
String filePath = soundDir+ + fileName;
于 2014-04-22T14:47:02.903 回答