2017-10-17 15 views
0

"ad_runner"라는 폴더에서 파일에 액세스하려고 할 때 처리되지 않은 오류가 표시됩니다.이 파일은 USB 드라이브. 내가 도대체 ​​뭘 잘못하고있는 겁니까?UWP - Windows IOT - USB 드라이브에있는 "ad_runner"라는 특정 폴더에서 파일 가져 오기

 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

안녕하세요, 코드를 try/catch 블록에 넣고 catch 할 수 있습니까? 제기하는 예외 (있는 경우)? 또한 앱 매니페스트에 usb 선언을 추가 했습니까? –

+0

예, 이동식 저장소 선언을 추가했습니다. – Sillygoose4u

+0

간단한 시도를하는 것이 왜 나에게 발생하지 않았는지 알 수 없습니다. 결과 (e.message)에 '액세스가 거부되었습니다.'가 표시됩니다. 그러나 매니페스트 기능을 사용하도록 설정했습니다. https://image.ibb.co/hxkBY6/Capture.jpg – Sillygoose4u

답변

1

당신이 await KnownFolders.RemovableDevices.GetFoldersAsync();를 호출하려고하면이 첫 번째 전화는 이동식 장치 그러나 이동식 장치 스스로가 내부의 폴더를 반환하지 않는 것을 볼 수 있습니다. 그래서, 먼저 연결된 모든 이동식 장치를 검색 한 후 "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

작동합니다! 한가지 더, 포함 된 폴더 (ad_runner)의 각 파일에 대한 전체 경로 (file.Path)를 보여주고 있는데 이는 다시 훌륭하지만 목록의 해당 값을 이미지 URI에 형식으로 전달하면 이미지가 표시되지 않습니다. . 왜 어떤 이유? '시도하십시오 { BitmapImage sf = 새로운 BitmapImage (새로운 Uri (path_x [1])); imagex.Source = sf; dir_lbl.Text = path_x [1]; // 이것은 파일에서 전달하는 것입니다. 경로 } catch (예외 ex) { dir_lbl.Text = ex.Message; }' – Sillygoose4u

+1

파일을 비트 맵 이미지로로드하려면 IRandomAccessStream에서 전달해야합니다. 이미지를 구성하는 바이트 []를 얻는 것보다 간단하고 비트 맵 이미지 소스를 지정할 수 있습니다. 당신은 여기에 몇 가지 도움을 찾을 수 있습니다 : [링크] (http://windowsapptutorials.com/tips/storagefile/convert-storagefile-to-a-bitmapimage-in-universal-windows-apps/) –

+0

어쩌면이 다음에 다른 열 질문;) –