繁体   English   中英

为什么Java在主源文件夹中找不到文件?

[英]Why can't Java find a file inside of the main source folder?

我正在开发一款游戏,而 Java 似乎找不到我的文件。

我的播放声音功能是:

 void playSound(String soundLocation) {
    
    try
    {
        File soundPath = new File(soundLocation);
        
        if (soundPath.exists()) {
            AudioInputStream audioInput = AudioSystem.getAudioInputStream(soundPath);
            Clip clip = AudioSystem.getClip();
            clip.start();
            JOptionPane.showMessageDialog(null, "Press OK to stop playing");
        } else {
            System.out.println("Can't find file");
        }
    }
    
    catch(Exception ex) {
        ex.printStackTrace();
    }
    
  }

在我的主要课程中,我有:

 package game;

 public class GUI_Handler {

 public static void main(String[] args) {
    String soundPath = "c://users/harry/java workspace/SlavaSourcecode/src/game/jump.wav";
    
    SOUND_Handler soundStuff = new SOUND_Handler();
    soundStuff.playSound(soundPath);
  }

}

它输出“找不到文件”);

请帮忙! 谢谢,哈利

您必须将所有/替换为\\但在 Java 中,您还必须使用另一个反斜杠对反斜杠进行转义,以防止将其视为特殊字符。

因此,一旦将/ s 替换为\\ ,则需要将所有\\替换为\\\\

如果你拿你已经拥有的东西,你可以将soundPath修改为:

soundPath.replace("//","\").replace("\","\\");

它应该工作。

或者您可以手动编辑路径:

"c:\\users\\harry\\java workspace\\SlavaSourcecode\\src\\game\\jump.wav"

请注意,这根本不能移植到其他机器上。 实际上,如果您使用具有标准文件结构(当今大多数开发人员使用的“约定”)的构建工具(Gradle/Maven)会更好。 文件结构有两个目录:一个用于源代码src/main/java ,另一个用于资源src/main/resources 通常,您jump.wav任何此类资产粘贴在resources目录中,并从resources目录加载jump.wav ,该目录始终在类路径上相对可访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM