c# - 从通用 Windows 应用程序将 CSV 文件写入运行 Windows 10 IoT 的 C:\temp
问题描述
当 Raspberry Pi 3(运行 Windows 10 IoT)无法将数据发送到 Azure 数据库时,我一直在编写一个需要将一些数据转储到 c:\temp\TempData.csv 的应用程序。
到目前为止,我已经能够使用 Windows Powershell 创建文件夹和文件,但是当我尝试从应用程序将数据保存到文件时,我只得到“System.UnauthorizedAccessException:访问路径'C:\temp'是拒绝。在 System.IO.WinRTIOExtensions",从这个错误中可以清楚地看出我们正在谈论权限,但我已经尝试更改该文件夹的 ACL:get-acl "c:\temp" 将返回 "temp BUILTIN\Administrators每个人都允许完全控制...”,因此它应该具有所有需要的权限。
从应用程序的角度来看,这是我应该将数据发送到文件的代码:
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;
}
}
解决方案
这是 MSDN 论坛上有关 Windows IoT Core 上的文件访问的一般讨论。对于这个问题,您需要使用FolderPermissions工具来使 UWP 应用程序可以访问文件夹。请尝试在 PowerShell 中运行以下命令。使用您的代码对我来说效果很好。
FolderPermissions c:\temp -e
推荐阅读
- excel - 无法将类型为“System.__ComObject”的 COM 对象转换为类类型“System.Array”
- jags - JAGS:igit 的向量参数无效
- r - 使用 R 将 NA 先于无 NA 值 (1) 设为 0
- arm - 在不影响外设的情况下更改 STM32 上的时钟频率?
- spring - 测试休息控制器
- vba - 使用 CTRL 键在 VBE 中设置快捷方式值
- ruby-on-rails - 将散列常量克隆到新变量中,而不会在使用 .each 块更新时改变常量?
- google-apps-script - 当单元格的值增加时如何显示“Browser.msgBox”?
- sas - 根据 SAS 中的最小值和最大值填写缺失的日期
- smartsheet-api - 行版本历史