CopyAsync方法不会替换现有文件。 UWP。应用程序存储

时间:2019-04-08 16:13:23

标签: c# uwp

现在,我正在应用程序中进行编辑操作。因此,在编辑操作中可以更改图像,并且在同一时间不能重命名联系人图像的文件名(在一次操作中将更改图像文件,但所有此文件将使用相同的名称)

我使用了CopyAsync方法的重载(该方法here的文档),据我所知,必须将文件替换为同名的现有文件。

我得到imageFile的{​​{1}}变量。每当我通过FileOpenPicker选择图像时,下面的代码就会运行。当我在结果FileOpenPicker上重新选择图像时,UI控件将显示先前选择的图像。我希望Image将查看我选择的最后一张图像,但这不会发生。

Image

在这种情况下,也许我不正确地理解 public BitmapImage Image { set; get; } //Copy of the file that saved in temporary storage StorageFile fileForView = await imageFile.CopyAsync (ApplicationData.Current.TemporaryFolder, fileName, NameCollisionOption.ReplaceExisting); Image = new BitmapImage(new Uri(fileForView.Path)); 方法的逻辑,请告诉我如何使我的计划与此方法一起使用。否则请提供您的解决方案,因为我现在不知道该怎么做。

我也尝试使用CopyAsync方法来做到这一点。但是仍然没有结果。我是这样做的:

CopyAndReplaceAsync

1 个答案:

答案 0 :(得分:0)

  

我希望“图片”将查看我选择的最后一张图片,但不会发生。

上面的CopyAsync方法是正确的,并且我已经使用以下代码进行了测试,效果很好。

private async void ListOption_ItemClick(object sender, ItemClickEventArgs e)
{
    FileOpenPicker openPicker = new FileOpenPicker();
    openPicker.ViewMode = PickerViewMode.Thumbnail;
    openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
    openPicker.FileTypeFilter.Add(".jpg");
    openPicker.FileTypeFilter.Add(".jpeg");
    openPicker.FileTypeFilter.Add(".png");

    StorageFile file = await openPicker.PickSingleFileAsync();
    if (file != null)
    {
        StorageFile fileForView = await file.CopyAsync(ApplicationData.Current.TemporaryFolder, file.Name, NameCollisionOption.ReplaceExisting);
        Image = new BitmapImage(new Uri(fileForView.Path));
        TestImg.Source = Image;
    }
    else
    {

    }
}