2017-08-24 54 views
0

我試圖使用UWP獲取視頻庫內的特定文件夾中的所有視頻,現在我可以在視頻庫中獲得所有視頻,但我想將我的結果減少到僅指定文件夾內的結果。我的代碼是這樣的:使用UWP獲取庫中特定文件夾內的所有文件

  Windows.Storage.Search.QueryOptions queryOption = new QueryOptions(CommonFileQuery.OrderByTitle, new string[] {".mp4"}); 

      queryOption.FolderDepth = FolderDepth.Deep; 

      var files = await KnownFolders.VideosLibrary.CreateFileQueryWithOptions(queryOption).GetFilesAsync(); 
      StorageFile videoToPlay = (files[new Random().Next(0, files.Count)] as StorageFile); 
      var stream = await videoToPlay.OpenAsync(Windows.Storage.FileAccessMode.Read); 
      Player.SetSource(stream, videoToPlay.ContentType); 
      Debug.WriteLine(Player.Source); 

我如何可以訪問一個名爲「視頻播放」,然後獲取該文件夾內的所有視頻子文件夾?我嘗試用類似的路徑accesing它:

 string localfolder = Windows.Storage.ApplicationData.Current.LocalFolder.Path; 
     var array = localfolder.Split('\\'); 
     var username = array[2]; 
     string[] allVideos = System.IO.Directory.GetFiles("C:/Users/" + username + "/Videos/Videos to Play"); 

,但我得到拒絕訪問,即使我已經請求訪問視頻庫(和第一個示例顯示,我居然有機會獲得它的事實) 。

+0

您獲取用戶名的代碼不正確。您無法對文件夾位置做出假設 - 或者即使配置文件的文件夾名稱與用戶名相同。如果計算機設置爲使用'D:\ People \ {userName} \'會怎麼樣?用戶也可以輕鬆更改視頻文件夾的位置。 – Dai

+0

那麼我該怎麼去得到它呢?我試圖讓路徑像'@「%USERPROFILE%\ Videos \ Play來播放'',但這似乎也不起作用。 – user8296390

+0

UWP應用程序沒有權限訪問計算機上的所有文件 - 不能像這樣訪問元素(在大多數情況下)。您應該爲此使用代理 - * StorageFile/StorageFolder *。 – Romasz

回答

1
try 
{ 
    var folder = await KnownFolders.VideosLibrary.GetFolderAsync("Videos to Play"); 
} 
catch (FileNotFoundException exc) 
{ 
    // TODO: Handle the case when the folder wasn't found on the user's machine. 
} 

文件夾變量,你將有參考所需的文件夾。然後它就和你已經做的一樣,但不是KnownFolders.VideosLibrary文件夾使用這個!

相關問題