尝试读取AllAllBytes时访问路径

时间:2019-08-13 10:30:42

标签: c# uwp

我正在通过选择器获取文件,并且正在xaml的Image控件中显示该图像。

图像显示完美,但是当我尝试将路径转换为字节时,出现错误

试图给予图片库许可

  var picker = new FileOpenPicker();
            picker.ViewMode = PickerViewMode.Thumbnail;
            picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            picker.FileTypeFilter.Add(".jpg");
            picker.FileTypeFilter.Add(".png");
            picker.FileTypeFilter.Add(".jpeg");

            var file = await picker.PickSingleFileAsync();

            if (file != null) {

                var stream =  await file.OpenReadAsync();

                var bitmap = new BitmapImage();

                bitmap.SetSource(stream);

                var bytes = File.ReadAllBytes(file.Path); // Error

                selectedimage.Source = bitmap;

{“访问路径'some path'被拒绝。”}

1 个答案:

答案 0 :(得分:0)

  

尝试读取AllAllBytes时访问路径

UWP运行在沙箱中,我们无法直接使用路径访问文件,即使我们已经添加了broadFileSystemAccess功能,也无法在ReadAllTheBytes名称空间下使用System.IO。 Pavel Anikhouski的comment是正确的,我们可以使用MemoryStream将文件转换为字节。

    byte[] result;
    using (Stream stream = await imageFile.OpenStreamForReadAsync())
    {
        using (var memoryStream = new MemoryStream())
        {

            stream.CopyTo(memoryStream);
            result = memoryStream.ToArray();
        }
    }