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

时间:2016-10-04 05:35:50

标签: java file audio

所以,我要把我操作的声音的副本写成可播放的格式,但每当我尝试它时,文件都非常小(<1kb),并且它们不播放,很可能是因为它是不可读的数据。这是代码

 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”成为它创建的新文件,但它根本不会创建一个。

1 个答案:

答案 0 :(得分:0)

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