2017-01-16 14 views
1

UWPアプリケーションでFileSavePickerを使用していますが、どのユーザーがsqliteデータベースファイルをバックアップできるかを使用しています。問題は、ユーザーがファイルを保存し、新しく作成したファイルにsqliteファイルをコピーしようとするとUnauthorizedAccessExceptionが発生することです。FileSavePickerから作成したファイルでデータをコピーできない

var file = await savePicker.PickSaveFileAsync(); 

if (file != null) 
{ 
    CachedFileManager.DeferUpdates(file); 
    //Exception on line below 
    await Task.Run(() => File.Copy(file.Path, dbFilePath, true)); 
    FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file); 
} 

私は取得しています例外は、私の知る限りUWPのアプリケーションについて読んだことがあるとして、

{"Access to the path 'C:\\Users\\CurrentUser\\Desktop\\BackupFile.sqlite' is denied."} 

で、アプリケーションがFileSavePickerから来ているパス/ファイルにアクセスすることができます。あなたはそれらのファイルパスでファイルにアクセスすることはできませんUWPで

答えて

2

、アプリが特権(これファイルクラスからいくつかの方法が役に立たない)を持っていない - あなたはStorageFile経由でファイルにアクセスする必要があります(それがブローカーを使用します) 。あなたの場合は、両方のファイルに対してストリームを開いてコピーする必要があります。このようなもの:

using (var writeStream = await file.OpenStreamForWriteAsync()) 
using (var readStream = await dbFile.OpenStreamForReadAsync()) 
{ 
    await readStream.CopyToAsync(writeStream); 
} 
関連する問題