【问题标题】:Access to the path, when try to ReadAllTheBytes [duplicate]访问路径,当尝试 ReadAllTheBytes [重复]
【发布时间】:2019-08-13 10:30:42
【问题描述】:

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

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

试图给图片库许可

  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'的访问被拒绝。"}

【问题讨论】:

  • 谢谢@PavelAnikhouski,但我已经尝试过了,它的讲解很有效。此外,我想做的是将其转换为字节。图像将显示,但应用程序在 File.ReadAllBytes(file.Path) 上崩溃
  • 在 UWP 中你应该使用来自 FileIO 类的方法
  • 谢谢@PavelAnikhouski,但我想阅读字节
  • 这里已经回答 thread File.ReadAllBytes 不适用于 UWP

标签: c# uwp


【解决方案1】:

在尝试 ReadAllTheBytes 时访问路径

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

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

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

【讨论】:

  • 我的礼貌在哪里,非常感谢,我很感激
  • 这是我的荣幸。
  • 顺便问一下@Nico 我怎样才能找到一份入门级 Windows 开发人员的工作
猜你喜欢
  • 1970-01-01
  • 2016-04-05
  • 2011-09-10
  • 1970-01-01
  • 2021-05-11
  • 2015-03-19
  • 1970-01-01
  • 2018-12-28
  • 1970-01-01
相关资源
最近更新 更多