ファイルシステム上の設定可能な場所からjpegおよびpdfファイルを読み込んでいるアプリケーションを開発しています。 現在、実行中のバージョンがWPFで実装されていますが、今は新しいWindows Universalアプリケーションに移行しようとしています。Windows 10ユニバーサルアプリケーションファイル/ディレクトリアクセス
次のコードは、WPFで正常に動作します:
public IList<string> GetFilesByNumber(string path, string number)
{
if (string.IsNullOrWhiteSpace(path))
throw new ArgumentNullException(nameof(path));
if (string.IsNullOrWhiteSpace(number))
throw new ArgumentNullException(nameof(number));
if (!Directory.Exists(path))
throw new DirectoryNotFoundException(path);
var files = Directory.GetFiles(path, "*" + number + "*",
SearchOption.AllDirectories);
if (files == null || files.Length == 0)
return null;
return files;
}
ユニバーサルアプリを使用して、私はいくつかの問題に遭遇した:
Directory.Exists
は、私は外のディレクトリから読み取ることができますどのよう- 使用できません。私のアプリストレージ?
は、アプリのストレージ外の他のディレクトリから読み込むには、私は次のことを試してみました:
StorageFolder folder = StorageFolder.GetFolderFromPathAsync("D:\\texts\\");
var fileTypeFilter = new string[] { ".pdf", ".jpg" };
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, fileTypeFilter);
queryOptions.UserSearchFilter = "142";
StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> files = queryResult.GetFilesAsync().GetResults();
事がある:それisn'tが働いて、私は例外を取得:
をTextManager.Universal.DataAccess.dllで 'System.UnauthorizedAccessException'タイプの例外が発生しましたが、ユーザーコード で処理されませんでした。追加情報:アクセスが拒否されました。 (HRESULTからの例外:0x80070005(E_ACCESSDENIED))
が誰かをした...私はあなたがマニフェストにいくつかの権限を設定する必要があることを知っているが、私は、ファイルシステム入出力操作に適したものを見つけるcan'tまた、そのような問題/可能な解決策がありますか?
解決策: @Rico Suterが私に与えた解決策から、私はFolderPickerと組み合わせてFutureAccessListを選択しました。また、プログラムの再起動後にトークンを使ってエントリにアクセスすることもできます。
UX GuidlinesとこのGithub sampleをお勧めします。
ありがとうございました! UWPアプリで
なぜあなたのアプリのストレージ外のディレクトリから読み込みたいですか?理由のためにサンドボックスが存在します。 –
ファイルを簡単に変更できます。つまり、サンドボックス化のために方法はありません。 – WhiteIntel