Java总是返回
java.io.FileNotFoundException: \Beep.wav (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at bombTimer.BombTimer.<init>(BombTimer.java:36)
at bombTimer.BombTimer.main(BombTimer.java:87)
这是我正在使用的代码
import sun.audio.*;
import javax.swing.*;
import javax.swing.text.BadLocationException;
@SuppressWarnings("serial")
public class BombTimer extends JFrame implements ActionListener {
private AudioStream audioStream1=null;
private AudioStream audioStream2=null;
public BombTimer(){
try {
audioStream1=new AudioStream(new FileInputStream("/Beep.wav"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我已经将类路径设置了一百万次,它没有改变任何东西 我复制了文本并从命令行编译它,它在那里工作。
我仍然不满意,但现在运行
答案 0 :(得分:1)
好吧我认为因为当我们用/它被认为是绝对路径时它不是相对路径所以如果你想找到你的文件将文件保存在与java文件相同的包中并确保,现在,在构建项目时,文件也会复制到bin文件夹中,您可以通过编写此语句来访问该文件。
audioStream1=new AudioStream(new FileInputStream("Beep.wav"));
答案 1 :(得分:1)
尝试将文件放在src /中,但放在常规项目文件夹中。
答案 2 :(得分:1)
尝试从类路径中将wav作为InputStream加载。
有几种方法可以做到这一点,但这可能会奏效。
audioStream1=new AudioStream(this.getClass().getClassLoader().getResourceAsStream("Beep.wav"));
看起来你所做的是提供文件系统的绝对路径,所以你编写代码的方式,你的类路径被完全忽略了。
答案 3 :(得分:0)
使用File
对象时,它不会从类路径中读取。因此,您需要将.wav
文件保留在项目根文件夹中。对于前者;
c:\javaproj\Beep.wav
或
您需要在代码中提及文件的绝对路径。
try {
audioStream1=new AudioStream(new FileInputStream("c:/javaproj/src/Beep.wav")); // location of file
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}