2016-10-13 126 views
0

我目前正在研究一個項目,該項目要求我使用我的參數暫停。然後將新聲音寫入文件,但是每次播放我的新文件時都只播放最後一個單詞。任何幫助將不勝感激。將WAV寫入文件

public void play(int pause, String filename, String path) throws InterruptedException { 
    // play the words in order 
    for (int i = 0; i < numWords; i++) { 
     myWordArray[i].blockingPlay(); 
     Thread.sleep(pause); 
     try { 
     myWordArray[i].writeToFile("C:\\Users\\Taylor\\Desktop\\JavaMedia\\thisisatest_pause.wav\\"); 
     } catch (SoundException e){ 
     System.out.println("Error" +e); 

     } 
     } 
    } 
+2

請按照以下標準撰寫問題:http://stackoverflow.com/help/mcve –

+1

看起來您正在寫同一個文件,因此只保留最後一個單詞。相反,您應該更改添加數組索引的wav文件的名稱,例如,爲每個單詞保存一個文件。 –

回答

0

你的問題是在這裏:

myWordArray[i].writeToFile("C:\\Users\\Taylor\\Desktop\\JavaMedia\\thisisatest_pause.wav");  

你看,你迭代WAV對象的列表;(?)然後你將所有這些不同的對象寫入相同的文件。可能會覆蓋之前寫的內容!

一個簡單的方法來解決這個問題:包括指數在創建的文件名,像

"...pause-" + i + ".wav" 

,而不是結束的東西。

+0

我覺得是這樣,我試着你說的話,它不會編譯。任何幫助將不勝感激。 – buck4life

+0

嘗試myWordArray [i] .writeToFile(「Users/rdopler/Documents/Mediasources/thisisatest_pause1」+ i ++「.wav」); (SoundException e){System.out.println(「Error」+ e); – buck4life

+0

對不起,我的答案有一個錯字 - 你已經增加了你的計數器,所以你只需要「+ i +」以便將計數器值作爲字符串添加到文件名中。希望這對你有用。但嚴重的是:如果你在這樣的級別上有問題,那麼你最好先花一些時間研究** java基礎知識**。如果您不知道如何構建字符串並克服這些簡單的拼寫錯誤,那麼保存WAV文件就沒有意義。 – GhostCat