如何将声音(WAV)写入文件

问题描述:

因此,我要将我操纵的声音的副本写入可播放的格式,但每当我尝试它时,文件都很小(< 1kb),而且他们不玩,很可能是因为它不可读数据。这是我猜的代码如何将声音(WAV)写入文件

public void play(int pause, String filename, String path) throws InterruptedException { 
    for (int i =0; i < numWords; i++) { 
     myWordArray[i].blockingPlay(); 
     Thread.sleep(pause); // 300 m.seconds, as listed in main method parameter 
     File file = new File(path, filename); 
    try{ 
    PrintWriter output = new PrintWriter(file); 
    output.println(myWordArray[i]); 
    output.close(); 
    } catch(IOException ex) { 
     System.out.printf("ERROR: %s\n", ex); 
    } 
    } 
} 

的PrintWriter仅适用于字符串,这就是为什么当我试图发挥我的WAV文件是越来越损坏?我应该替代什么?

编辑 -

因此,使用张贴在评论的引导,我修改了代码,但是,现在它完全不创建一个文件。这里是我的音乐类中的代码...

public void play(int pause, String filename, String path) throws InterruptedException { 
    for (int i =0; i < numWords; i++) { 
     myWordArray[i].blockingPlay(); 
     Thread.sleep(pause); // 300 m.seconds, as listed in main method parameter 
     File file = new File("C:\\Users\\Justin\\Desktop\\JavaMedia\\", "thisisatest.wav"); 
     try{ 
     InputStream fis = new FileInputStream(file); 
     byte[] buffer = new byte[(int)file.length()]; 
     fis.read(buffer, 0, buffer.length); 
     fis.close(); 
     } 
     catch(IOException ex){ 
       System.out.printf("ERROR: %s\n", ex); 
} 
} 
} 

这里是我的主要的电话...

myPoem.play(300,"thisisatest_pause.wav", "C:\\Users\\Justin\\Desktop\\JavaMedia\\"); 

我希望“thisisatest_pause.wav”是它创建新文件,但它根本不创建。

+0

也许是一个ByteArrayOutputStream或类似 –

+0

可能重复的[转换音频流到WAV字节数组在Java中没有临时文件](http://stackoverflow.com/questions/198679/convert-audio-stream-to-wav-byte -array-in-java-without-temp-file) – BevynQ

+0

我编辑了它并说明了我的错误,对于如何做到这一点甚至在使用指南时都很困惑。 – TheDkmariolink

因为myWordArray [i]是一个对象。所以它会将myWordArray [i] .toString()写入文件,而不是声音。
你使用Sound#blockingPlay()从http://coweb.cc.gatech.edu/mediaComp-plan/uploads/101/bookClasses-3-9-10.zip。如果是,它有writeToFile()方法将声音写入文件。