出于安全原因,通用 Windows 应用程序只能访问外部驱动器上某些类型的文件,
而且你必须在 Package.appxmanifest 文件中明确声明它。
您可能还想检查可移动存储功能。
我认为您无法访问除上述三种类型之外的通用文件格式,否则您将收到“访问被拒绝”异常。
在here 中查找更多详细信息。
一旦你声明了你的能力,你可以使用以下代码获取外部存储设备的根文件夹,
var removableDevices = KnownFolders.RemovableDevices;
var externalDrives = await removableDevices.GetFoldersAsync();
var drive0 = externalDrives[0];
然后您可以按照here 中的代码示例,使用 Stream 方法写入文件。
如果您想将数据写入通用文件格式,一种解决方法是使用可访问的文件格式(如 jpg),并将原始数据写入其中。下面是一些在 Raspberry Pi 2 Model B 上验证的代码示例,使用 Windows IoT 14393,外部 USB 驱动器连接到 USB 端口。
private async void WriteData()
{
var removableDevices = KnownFolders.RemovableDevices;
var externalDrives = await removableDevices.GetFoldersAsync();
var drive0 = externalDrives[0];
var testFolder = await drive0.CreateFolderAsync("Test");
var testFile = await testFolder.CreateFileAsync("Test.jpg");
var byteArray = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
using (var sourceStream = new MemoryStream(byteArray).AsRandomAccessStream())
{
using (var destinationStream = (await testFile.OpenAsync(FileAccessMode.ReadWrite)).GetOutputStreamAt(0))
{
await RandomAccessStream.CopyAndCloseAsync(sourceStream, destinationStream);
}
}
}