2016-08-10 94 views
1

我試圖在C#中編寫的Windows通用應用程序中獲取默認音樂庫文件夾路徑。但是,KnownFolders.MusicLibrary.Path返回空字符串,而(await KnownFolders.MusicLibrary.GetFoldersAsync())似乎返回空列表。我已經在Package.appxmanifest中指定了此功能:Windows.Storage.KnownFolders.MusicLibrary路徑返回空

<Package ...> 

    ... 

    <Capabilities> 
    <uap:Capability Name="musicLibrary" /> 
    </Capabilities> 
</Package> 

我該怎麼做這個錯誤?我期望這行代碼將返回類似C:\Users\username\Music

+0

正如我記得圖書館沒有路徑。這是一些特殊的文件夾。請參閱[本主題](http://stackoverflow.com/questions/11302799/how-do-i-get-the-absolute-path-of-documentslibrary-in-win8-metro-winrt) –

回答

6

備註KnownFolders.MusicLibrary property,我們可以發現,

庫允許用戶查看在一個位置相關的內容。庫是一個虛擬文件夾。庫中的文件夾保留在其原始位置。在Windows Libraries瞭解有關庫的更多信息。

StorageFolder.Path property可以得到在文件系統中的當前文件夾的完整路徑,但前提是路徑是提供。由於音樂庫是一個虛擬文件夾,文件系統路徑不可用。所以它總是返回空字符串。

音樂庫通常具有以下路徑。

%USERPROFILE%\Music 

這是包含在音樂庫中的已知文件夾的路徑。

庫是虛擬文件夾集合,它包括默認情況下加任何其他文件夾使用您的應用程序或內置應用程序的一個用戶已添加到庫中已知的文件夾。例如,圖片庫默認包含圖片已知文件夾。用戶可以使用您的應用程序或內置的照片應用程序將文件夾添加到圖片庫中,或將其從圖片庫中刪除。

爲了得到這個路徑,我們可以使用StorageLibrary class。這個課程允許我們從音樂或視頻庫等庫中添加和刪除文件夾,並讓我們獲取庫中包含的文件夾列表。

已知文件夾是默認保存新文件的庫中的文件夾。我們可以用StorageLibrary.SaveFolder property得到這個文件夾,比得到它的路徑類似如下:

var musicLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Music); 
Debug.WriteLine(musicLibrary.SaveFolder.Path); 

欲瞭解更多信息,請參閱Files and folders in the Music, Pictures, and Videos libraries

+0

感謝您的解釋! –