[英]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.