c # UWP Получение доступа к пути запрещено при записи байтов в новый файл после массива, созданного DataReader - PullRequest
0 голосов
/ 04 января 2019

Я установил права доступа к каталогу для всех пользователей Полный контроль, но все равно получаю ошибку.

ОШИБКА enter image description here

КОД

        /// Handles a frame arrived event and renders the frame to the screen.
    /// </summary>
    private void FrameReader_FrameArrived(MediaFrameReader sender, MediaFrameArrivedEventArgs args)
    {
        // TryAcquireLatestFrame will return the latest frame that has not yet been acquired.
        // This can return null if there is no such frame, or if the reader is not in the
        // "Started" state. The latter can occur if a FrameArrived event was in flight
        // when the reader was stopped.

        // Get frame image from camera:
        using (MediaFrameReference  frame = sender.TryAcquireLatestFrame())   //  ==>  MediaFrameReference 
        {
            // Got image?
            if (frame != null)
            {
                                    // DIAG: Save image data to file for analysis:
                                        // Get image byte data: 
                                            DataReader dataReader = DataReader.FromBuffer( frame.BufferMediaFrame.Buffer );
                                            byte[] camera_image_bytes = new byte[ frame.BufferMediaFrame.Buffer.Length];
                                            dataReader.ReadBytes( camera_image_bytes );

                                        // Save to file :
                                            var len =  camera_image_bytes.Length;
                                            System.IO.File.WriteAllBytes( "C:\\PRIMARY\\WORK\\CAMERA READER\\camera_image_bytes.bin", camera_image_bytes );  <<<<<<<<<<<   E R R O R   H E R E

1 Ответ

0 голосов
/ 05 января 2019

Ошибка правильная: ваше приложение не имеет доступа к C: \ PRIMARY \ WORK \ CAMERA READER \. Приложения UWP работают с подмножеством разрешений пользователя и по умолчанию могут напрямую записывать только в свои папки данных приложения. Для получения дополнительной информации см. Документацию UWP Разрешения доступа к файлу .

Ваш пользователь может предоставить приложению посреднический доступ к другим областям несколькими способами, наиболее вероятными из которых являются FileSavePicker (чтобы пользователь мог выбрать, куда сохранять) или объявленные возможности , такие как picturesLibrary или broadFileSystemAccess. См. Доступ к дополнительным расположениям Эти методы позволят приложению получить доступ к папке через файловый брокер и объекты StorageFile и StorageFolder.

Из того, что вы здесь представляете, этого должно быть достаточно. Windows.Storage.FileIO.WriteBytesAsync очень похож на ваш вызов System.IO.File.WriteAllBytes. Если вам нужно использовать System.IO вместо Windows.Storage, вы можете получить посредническую РУЧКУ через IStorageItemHandleAccess , а затем использовать ее для инициализации System.IO.FileStreams и т. Д.

...