2016-10-04 125 views
-1

因此,我要將我操縱的聲音的副本寫入可播放的格式,但每當我嘗試它時,文件都很小(< 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

回答