2013-12-17 53 views
1

我在选择wav时遇到了问题。附近是代码:JFileChooser - 选择音频(.wav) - Java

JFileChooser chooser = new JFileChooser(); 
FileNameExtensionFilter filter = new FileNameExtensionFilter(
          "mp3 & wav Images", "wav", "mp3"); 
chooser.setFileFilter(filter); 
int returnVal = chooser.showOpenDialog(getParent()); 
if(returnVal == JFileChooser.APPROVE_OPTION) { 
     System.out.println("You chose to open this file: " + chooser.getSelectedFile().getName()); 
} 

InputStream in = new FileInputStream(chooser.getSelectedFile().getAbsolutePath()); 
AudioStream as = new AudioStream(in); 
AudioPlayer.player.start(as); 

我在eclipse错误语音串流和AudioPlayer,我使用JDK 7。如何解决这个问题?

+0

能否请您发表你的错误stacktrace分析! – PrR3

+0

你在说什么样的错误?运行时错误?编译错误? ... – karlphillip

+0

好的,我改变了Build Path bacuse,那里有旧的JDK – user3104624

回答

1

这个SSCCE适合我。我正在linux上运行jdk 1.7.0_45。我与文件测试它

/usr/lib/libreoffice/share/gallery/sounds/train.wav

Main.java

import sun.audio.AudioPlayer; 
import sun.audio.AudioStream; 
import javax.swing.*; 
import javax.swing.filechooser.FileNameExtensionFilter; 
import java.io.FileInputStream; 
import java.io.InputStream; 

/** 
* http://stackoverflow.com/questions/20639187/jfilechooser-select-audio-wav-java 
*/ 
public class Main { 
    public static void main(String[] args) throws Exception { 
     JFileChooser chooser = new JFileChooser(); 
     chooser.setFileFilter(new FileNameExtensionFilter("mp3 & wav Images", "wav", "mp3")); 
     if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { 
      InputStream in = new FileInputStream(chooser.getSelectedFile().getAbsolutePath()); 
      AudioStream as = new AudioStream(in); 
      AudioPlayer.player.start(as); 
     } 
     // Move the code that was here, to play the file, inside the if statement so the 
     // application doesn't crash if the user doesn't select a file to play. 
    } 
} 

你可以在命令行中使用以下测试:

javac Main.java 
java Main 

在代码,您张贴,如果您没有从JFileChooser中选择文件,则会产生运行时错误,因为即使用户没有选择文件,也要访问所选文件。

1

试试下面的代码片段,为我工作好几次:

... 
URL url = ClassLoader.getResource(chooser.getSelectedFile().getAbsolutePath()); 
AudioInputStream ais = AudioSystem.getAudioInputStream(url); 
Clip clip = AudioSystem.getClip(); 
clip.open(ais); 
... 

How to cast from InputStream to AudioInputStream

BTW还讨论:你的代码工作在我的机器上很好...