从 Universal Windows App 将 CSV 文件写入 C:\temp 运行 Windows 10 IoT

Write a CSV file to C:\temp running Windows 10 IoT from a Universal Windows App

我一直在编写一个应用程序,当 Raspberry Pi 3 (运行 Windows 10 IoT) 可以时,需要将一些数据转储到 c:\temp\TempData.csv ' 将数据发送到 Azure 数据库。

到目前为止,我已经能够使用 Windows Powershell 创建文件夹和文件,但是当我尝试将数据从应用程序保存到文件时,我只得到 "System.UnauthorizedAccessException: Access to the path 'C:\temp' is denied. at System.IO.WinRTIOExtensions",来自这个错误很明显我们正在谈论权限,但我已经尝试更改该文件夹的 ACL:get-acl "c:\temp" will return "temp BUILTIN\Administrators Everyone Allow FullControl...",所以它应该有所有所需的权限。

从应用程序的角度来看,这是我应该将数据发送到文件的代码:

public static async void SaveFileAsync()
    {
        string File = @"c:\temp\TempData.csv";

        for (int i = 0; i < 50; i++)
        {
            var DataPoint = new SensorData
            {
                Temp = GetNewRandom(22, 40),
                Humidity = GetNewRandom(25, 30),
                Pressure = GetNewRandom(90000, 110000)
            };

            await WriteCSVLine(File, DataPoint);
        }
    }

    private static Task WriteCSVLine(string FilePath, SensorData data)
    {
        try
        {
            using (StreamWriter w = File.AppendText(FilePath))
            {
                return w.WriteLineAsync(data.ToString());
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
            throw;
        }

    }

这里是关于 File Access on Windows IoT Core MSDN forum.For 这个问题的一般性讨论,您需要使用 FolderPermissions 工具来使 UWP 应用程序可以访问文件夹.请在 PowerShell 中尝试 运行 以下命令。你的代码对我来说效果很好。

FolderPermissions c:\temp -e