在哪里放置相对于 java 项目的声音文件?

Posted

技术标签:

【中文标题】在哪里放置相对于 java 项目的声音文件?【英文标题】:where to place sound files relative to a java project? 【发布时间】:2011-12-13 03:25:06 【问题描述】:

这是我第一次实现声音,但我不知道在哪里实际放置声音来播放它们。我使用 Eclipse 作为我的 IDE,我已经将我的声音放在一个名为 sound 的文件夹中。

以下代码是我用来创建音频剪辑对象之一的代码:

private final String background = "." + slash + "sounds" + slash + "background.wav";

main(....)
    try 
        backgroundClip = Applet.newAudioClip(new File(background).toURI().toURL());
     catch (MalformedURLException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    

我什么也没听到。当我删除 try/catch 时,我收到一条错误消息,提示它无法找到该文件。我将声音文件夹放在/src/bin 中,但都找不到。我把它放在哪里?

【问题讨论】:

1) String background = "." + slash + .. 如果slash 的值为/ 是错误的。如果值为System.getProperty("file.separator"),则应将其称为separator(或类似名称)。但是File 的构造函数可以为您完成所有这些工作。 2) 从 Java 1.3 开始,J2SE 提供了javax.sound.sampled API。使用它而不是 AudioClip 【参考方案1】:

您的项目的基础是src 文件夹上方的级别。所以使用. 会将你放在你的项目文件夹中。

基本上,

. = project_root

./src = default_package
./src/packagename = inside the package named "packagename"

./sounds/background.wav = a .wav file in the sounds folder, in the project_root

使用您当前的路径,您需要将您的.wav 文件放入sounds 文件夹中的project_root

路径最终会是project_root/sounds/background.wav

【讨论】:

什么?不是“。”指的是当前执行的文件夹? 是的。执行发生在project_base。我之前花了几天时间试图弄清楚这一点,这就是我的结果。【参考方案2】:

请参阅this thread 以了解为什么应用程序资源应该通过从getResource() 获得的URL 获取,而不是从File 转换为URL

【讨论】:

同意。在 Java 7 中,在 getResource() 中使用 URL 更为重要。我在这里遇到了类似的问题:***.com/questions/8091967/…

以上是关于在哪里放置相对于 java 项目的声音文件?的主要内容,如果未能解决你的问题,请参考以下文章

Java项目用注解比用xml好在哪里?

java 查找文件目录

我在哪里放置与我的项目相关的 conda-recipe?

java项目中文件的路径

在哪里放置我的 base.html 文件?

java项目如何实现上传图片到项目外部,访问时使用相对于域名的相对路径 系统架构大致是jboss+nginx