2017-08-24 18 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); 

し、そのフォルダ内のすべての動画を取得:私のコードはこれですか?

 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"); 

しかし、私はすでにビデオライブラリへのアクセスを要求したにもかかわらず、アクセス拒否を取得します(最初の例が機能するという事実は、私が実際にそれへのアクセス権を持っていることを示して):私のようなパスを使用して、それをaccesing試してみました。 フォルダ変数で

+0

ユーザー名を取得するためのコードが正しくありません。フォルダの場所やプロファイルのフォルダ名がユーザー名と同じであることを前提にすることはできません。コンピュータが 'D:\ People \ {userName} \ 'を使用するように設定されている場合はどうなりますか?また、Videosフォルダの場所もユーザーが簡単に変更できます。 – Dai

+0

それから、どうやってそれを手に入れようか?私は '@"%USERPROFILE%\ Videos \ Videos "を再生するような道を作ってみましたが、それはうまくいきませんでした。 – 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 folderこれを使用してください!

関連する問題