0

我正在尝试用 AppData 子目录中的新版本覆盖文件。

当前的过程是用户必须选择要覆盖的文件,以及它所在的文件夹目录,以便我可以将它们添加到未来的访问列表中。稍后,用户可以从一组图像中进行选择,此时它需要复制并覆盖目标文件。我尝试执行此操作的代码如下:

// lets try to copy file to wallpaper default location.
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
var faToken = localSettings.Values["WallpaperStorageFileFAToken"] as string;
var faTokenFolder = localSettings.Values["WallpaperStorageFolderFAToken"] as string;

var destinationFile = await LoadExistingFileSelection(faToken);
var destinationFolder = await LoadExistingFolderSelection(faTokenFolder);

StorageFile movedFile = null;
try
{
    movedFile = await imageFile.CopyAsync(destinationFolder, destinationFile.Name, NameCollisionOption.ReplaceExisting);
}
catch (Exception genEx)
{
    //
}

在用户使用Faan 获取目标目录后获取令牌,使用a获取目标目录。FileOpenPickerStorageFileFolderPickerStorageFolder

LoadExistingFolderSelection 和 LoadExistingFileSelection 使用以下代码位来获取StorageFilesStorageFolder

await StorageApplicationPermissions.FutureAccessList.GetFileAsync(faToken);

await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(faFolderToken);

问题是这一行:

imageFile.CopyAsync(destinationFolder, destinationFile.Name, NameCollisionOption.ReplaceExisting);

引发此错误:

“价值不在预期范围内。”

就是这样,实际上没有别的,任何想法都会很棒。

4

1 回答 1

1

反斜杠...老实说,这是你发展生涯中的那些时刻之一,你只是坐在那里叹息,因为它太愚蠢了。

因此,我可以愉快地检索我想要完全复制到StorageFile对象中的图像,路径包含一个额外的反斜杠,Windows 操作系统文件资源管理器不会对此感到惊讶。

到目前为止没问题,很好地继续运行一个复制操作,突然你得到了

“值不在预期范围内。”</p>

异常,可以说是我见过的与文件路径问题相关的最没有帮助的异常之一。

所以你有它,反斜杠,非常仔细地检查 Path 属性。事后诸葛亮。通常我会删除这个问题,因为这个答案并不是什么特别大的启示。但我认为它可以作为关于可怕的反斜杠和 UWP 的存储 API 的警告。

于 2019-09-19T09:18:09.157 回答