2017-10-30 4 views
2

이제 UWP는 .NET Standard 2.0을 지원하므로 FileinfoDirectoryInfo을 포함하여 더 많은 System.IO 네임 스페이스에 액세스 할 수 있습니다.UWP StorageFile을 .NET FileInfo로 변환하는 방법은 무엇입니까?

UWP StorageFile을 어떻게 Fileinfo로 변환합니까? DirectoryInfo에 StorageFolder를 추가 하시겠습니까?

결과 Fileinfo를 열려고 할 때 순진한 접근법 (StorageItem의 전체 경로 가져 오기 및 Fileinfo 생성)이 실패하고 가능한 경우 PCLStorage을 사용하지 않으려 고합니다.

+0

순진한 구현은 Windows 10 바탕 화면에서 uwp에서 잘 작동합니다. 예를 들어 결과 파일 정보에 액세스 할 수 있습니다. 예를 들어 Directory.FullName을 사용하여 메시지를 표시 할 수 있습니다. 어쩌면 그것은 공급자에 따라 달라집니다. Windows 10 이름은 "This PC"(LOL)입니다. – vitalygolub

+0

FileInfo를 열어 스트림을 가져올 때까지 제대로 작동합니다. – Alberto

답변

1

System.IO.File 및 System.IO.FileInfo는 오랫동안 UWP 응용 프로그램에서 사용할 수 있습니다. 새로운 표준이 아닙니다 .Net Standard 2.0

StorageFile과 FileInfo는 동일한 기능을 수행하지 않으므로 일반적으로 서로 바꿔 쓸 수 없습니다. 어떤 오류가 발생했는지는 알 수 없지만, 내 생각 엔 앱이 사용하려는 경로에 직접 액세스 할 수 없기 때문에 AccessDenied라는 것입니다.

기본적으로 응용 프로그램은 ApplicationData 및 InstalledLocations에 대한 직접 파일 액세스 권한이 있습니다. System.IO를 사용하여 해당 위치에 직접 액세스 할 수 있습니다. 사용자가 액세스 권한을 부여받은 다른 위치 (파일 선택기를 통해 직접, 패키지 기능에 의해 암시 적으로 등)에 액세스하려면 응용 프로그램이 StorageFile 및 StorageFolder 클래스를 통해 파일 중개자를 거쳐야합니다.

IStorageHandleAccess에서 중개 된 Win32 파일 HANDLE을 가져 와서 System.IO.File을 초기화 할 수 있지만 FileInfo는 HANDLE로 구성 할 수있는 방법을 제공하지 않습니다.

+0

File Picker를 통해 StorageFile을 가져 오는 중입니다. UWP 샌드 박싱으로 인한 한계를 알고 있습니다. 문제는 그 FileInfos에서 스트림을 가져 오는 중입니다. StorageFile을 열 수는 있지만 FileInfo의 경로를 사용하고 파일 열기를 시도하면 예외 (액세스가 거부 됨)가 발생합니다. – Alberto

+1

FileInfo가 중재 액세스를 얻지 못합니다. 앱이 직접 쓸 수있는 위치에서만이 도구를 사용할 수 있습니다. 다른 사용자는 StorageFile에서 스트리밍하거나 IStorageHandleAccess를 사용하여 System.IO.File을 초기화해야합니다. –