2015-10-04 56 views
1

我是C#的新手,我一直在嘗試使用SoundPlayer類播放聲音。所以在我的Visual Studio(2015社區)解決方案中,我創建了一個名爲Music的文件夾,並在那裏拖放了一個wav文件。在屬性中,我找到了文件路徑,然後在SoundPlayer構造函數中使用。現在,它在桌面上。找到C#文件的目錄#

我的問題是,我將移動實際的程序(它只是控制檯應用程序)到另一臺計算機(用不同的用戶名......我不知道)。那麼C#能夠確定文件的新位置(目錄),以便我不會收到錯誤嗎?

SoundPlayer spPlayer = new SoundPlayer (@"C:\Users\tvavr\Desktop\Dango\mr_sandman.wav"); 
spPlayer.Play(); 

這是有效的代碼。現在,我該如何改變這條路?

Thx爲您的答案。

+1

http://stackoverflow.com/questions/20717407/how-to-read-the-text-file -from-the-application-directory-text-file,http://stackoverflow.com/questions/20717407/how-to-read-the-text-file-from-the-application-directory-text-file,http ://stackoverflow.com/questions/7551319/c-accessing-files-added-to-project-folder,http://stackoverflow.com/questions/12335618/file-path-for-project-files – CodeCaster

+0

你想要嗎?發揮你的程序背後實際存在的聲音? –

+1

如果你想總是播放同一個文件,你最好從資源中播放它,而不是從目錄中播放它。這樣你確保它始終存在。您也可以使用'Path.Combine'構建新位置的路徑。 –

回答

1

使用動態路徑如下:

SoundPlayer spPlayer = new SoundPlayer (Application.ExecutablePath [email protected]"\mr_sandman.wav"); 

其中Application.ExecutablePath將讓您的應用程序文件夾動態

+3

請不要使用「dynamic」作爲流行詞,並使用Path.Combine()來合併路徑。 – CodeCaster

1

這是一個設計決策,只有你能回答。當你寫了要求您加載一個文件控制檯應用程序,你有幾種選擇

選項#1:當執行

假設你的程序的名稱已經在計劃中的參數列表中指定的路徑是playsong,你這樣運行:

playsong C:/path-to-music-file/song.wav

你從主要的參數列表中的歌曲文件的名稱。 args中的第一個項目是文件名:

static void Main(string[] args) { 
    SoundPlayer spPlayer = new SoundPlayer(args[1]); 
    spPlayer.Play(); 
} 

選項2:通過硬編碼路徑訪問歌曲文件

static void Main() { 
    SoundPlayer spPlayer = new SoundPlayer("C:/playsong/songs/song.wav"); 
    spPlayer.Play(); 
} 

選項#3:相對於歌曲文件訪問程序的位置

static void Main() { 
    SoundPlayer spPlayer = new SoundPlayer(Application.ExecutablePath + "/songs/song.wav"); 
    spPlayer.Play(); 
} 

如果您以後想要將其更改爲圖形用戶界面(GUI)程序,您可以調出OpenFileDialog框讓用戶選擇該文件。

0

.NET有built-in tools訪問像當前用戶的桌面位置: System.Environment.SpecialFolder.Desktop