【问题标题】:Java don't read in pictures and audio files with relative pathJava 不读取具有相对路径的图片和音频文件
【发布时间】:2013-03-16 17:39:50
【问题描述】:

在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]; 线。

如果我尝试使用绝对路径,它确实有效! 我做错了什么?

【问题讨论】:

  • 起初仅适用于 Windows。

标签: java jar relative-path


【解决方案1】:

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

【讨论】:

  • 是的,它可以在 NetBeans 中工作,但如果我制作一个 jar,它就不能工作。 :(
  • 确保在制作 jar 时(如果您将其与 jar 捆绑)使用 ClassName.class.getResourceAsStream(fileName) 读取此文件。
  • 你能解释一下你的答案吗!我是一个新的java程序员
  • @hydroid:“。”表示当前目录路径。在项目中,当前目录路径始终是您的主项目文件夹路径
  • 好的。如果我了解您想要展示的内容,那么我应该制作我的
【解决方案2】:

你的路径是相对的,它被解析为相对于当前工作目录。当前工作目录不是你想的那样。

尝试在inputFile.listFiles()之前这样做;

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

看看Java 认为绝对路径应该是什么。

【讨论】:

  • 谢谢,您的回答很有帮助!我今天试试!
【解决方案3】:

如果抽象路径名不表示目录,File.listFiles 返回null

您需要确保inputFile 确实表示一个目录,以确保dateFileArray 不是null

【讨论】:

    【解决方案4】:

    尝试使用 File.separator 代替正斜杠。 例如:

    String soundDir = "." + File.separator + "folderName" + File.separator;
    String fileName = "sound.wav";
    String filePath = soundDir+ + fileName;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-26
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 2016-08-03
      相关资源
      最近更新 更多