2017-10-17 3 views
0

Je dois avoir une erreur non gérée lorsque je tente d'accéder à un fichier à partir d'un dossier nommé "ad_runner" Qui se trouve une clé USB conduire. Qu'est-ce que je fais mal?UWP - Windows IOT - Obtenir des fichiers d'un dossier spécifique nommé "ad_runner" situé dans un lecteur USB

 async void AccessTheWebAsync() 
    { 
     StorageFolder remd = await KnownFolders.RemovableDevices.GetFolderAsync("ad_runner"); 
     IReadOnlyList<StorageFile> fileList = await remd.GetFilesAsync(); 
     foreach (StorageFile file in fileList) 
     { 
      dir_lbl.Text = dir_lbl.Text + "\r\n" + file.Name; 
     } 
    } 
+1

Salut, pouvez-vous mettre votre code dans un bloc try/catch et des prises l'exception qui augmente (le cas échéant)? Avez-vous ajouté une déclaration usb dans le manifeste de l'application? –

+0

Oui, j'ai ajouté la déclaration de stockage amovible. – Sillygoose4u

+0

Je ne sais pas pourquoi il ne m'est pas venu à l'esprit de faire un essai simple. Le résultat (e.message) indique "Accès refusé". Cependant, j'ai activé les capacités du manifeste. https://image.ibb.co/hxkBY6/Capture.jpg – Sillygoose4u

Répondre

1

Si vous essayez d'appeler await KnownFolders.RemovableDevices.GetFoldersAsync(); vous pouvez voir que ce premier appel ne renvoient pas les dossiers à l'intérieur des périphériques amovibles, mais les périphériques amovibles themself. Donc, j'ai modifié un peu votre code d'abord récupérer tous les périphériques amovibles connectés et, après cela, la vérification des dossiers dans le nommé « ad_runner »:

async void AccessTheWebAsync() 
    { 
     //Maybe you want to do this inside a try catch and verify that at least 1 device is connected before you go on.... 
     var folderList = await KnownFolders.RemovableDevices.GetFoldersAsync(); 

     foreach (var device in await KnownFolders.RemovableDevices.GetFoldersAsync()) 
     { 
      try 
      { 
       StorageFolder remd = await device.GetFolderAsync("ad_runner"); 
       IReadOnlyList<StorageFile> fileList = await remd.GetFilesAsync(); 
       foreach (StorageFile file in fileList) 
       { 
        //Your logic here.... 
        dir_lbl.Text = dir_lbl.Text + "\r\n" + file.Name; 
       } 
      } 
      catch (Exception) 
      { 

      } 
      await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
      { 
       rightGridWrapper.Children.Add(new TextBlock { Text = $"DeviceName: {device.Name}" }); 
      }); 
     } 
} 
+0

Cela fonctionne! encore une chose, il montre le chemin complet (file.Path) pour chaque fichier dans le dossier contenu (ad_runner) qui est encore une fois génial mais quand je passe cette valeur dans une liste format à une image URI Il n'affiche pas les images . n'importe quelle raison pourquoi? 'essayer { BitmapImage sf = new BitmapImage (nouvel Uri (chemin_x [1])); imagex.Source = sf; dir_lbl.Text = chemin_x [1]; // c'est ce que je passe du fichier. path } catch (Exception ex) { dir_lbl.Text = ex.Message; } ' – Sillygoose4u

+1

Pour charger un fichier dans une image bitmap que vous devez passer d'un IRandomAccessStream, en mettant simple vous gagnez le byte [] composant votre image et que vous pouvez lui affecter la bitmapimage.source. vous pouvez trouver de l'aide ici: [link] (http://windowsapptutorials.com/tips/storagefile/convert-storagefile-to-a-bitmapimage-in-universal-windows-apps/) –

+0

Peut-être que la prochaine fois pour cela ouvrir une autre question;) –