C#uwp中的文件访问被拒绝

时间:2018-02-10 12:43:21

标签: c# uwp sha256 filepicker

我正在解决一个问题。我正在开发uwp应用程序,我需要使用filepicker选择文件的sha256哈希。 我已完成使用filepicker的部分,但是当我使用filepicker从我的计算机中选择文件并且我想检查此文件的哈希时,我收到有关访问被拒绝的错误消息。 有没有人解决过这样的问题?我想,当我用filepicker选择文件时,我可以访问它,对吧?

1 个答案:

答案 0 :(得分:2)

解决。 我的问题是init的流,我按名称输入了一个新的流,但它不会这样工作。 我发现,如果我查看使用filepicker选择的所有文件,我会使用从filepicker返回的对象。 工作示例:

        var picker = new Windows.Storage.Pickers.FileOpenPicker();
        picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
        picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.VideosLibrary;
        picker.FileTypeFilter.Add(".avi");
        picker.FileTypeFilter.Add(".mp4");
        picker.FileTypeFilter.Add(".mpeg");
        picker.FileTypeFilter.Add(".mov");
        picker.FileTypeFilter.Add(".mkv");

        IReadOnlyList<StorageFile> files = await picker.PickMultipleFilesAsync();
        if (files.Count > 0)
        {
            // doing some needed staff

            StringBuilder output = new StringBuilder("Picked files:\n\n");

            // Application now has read/write access to the picked file(s)
            foreach (StorageFile file in files)
            {
                output.Append(file.Name + "\n");

                using (IRandomAccessStream filestream = await file.OpenAsync(FileAccessMode.ReadWrite))
                {
                    output.Append("File SHA256 hash -> " + BytesToString(Sha256.ComputeHash(filestream.AsStreamForRead())) + "\n\n");
                    await filestream.FlushAsync();
                }
            }
            this.filePickerInfo.Text = output.ToString();                
        }
        else
        {
            this.filePickerInfo.Text = "Operation cancelled.";                
        }