随着Windows Phone 8.1的推出,它现在可以对Windows Phone 8.1设备的SD卡进行写访问:
MSDN: Windows Phone 8.1 Access SD Card
您指定 removableStorage 功能并注册您需要处理的所需文件扩展名,并且您可以查看SD卡的文件和文件夹。
我的问题是你如何在SD卡中创建一个新文件,如果它不存在?在查看ExternalStorageFolder的私有成员 m_internalFolderPath 后,我设法完成了以下操作:
File.Open("D:\\test.txt", FileMode.OpenOrCreate);
但使用" D:" 作为SD卡的根路径是否可以?我无法在网上找到任何参考资料。是字母" D:"设备/供应商特定或我应该相信它作为SD卡的信件?
答案 0 :(得分:2)
通过以D:
File.Create(@"D:\test.txt");
在大多数情况下都可以使用,但是在任何地方都没有说过操作系统会为SD卡分配D
字母(事实上我认为我还没见过其他的)。但可以肯定的是,您始终可以通过 StorageFolder 访问SD卡:
StorageFolder SDDevice = Windows.Storage.KnownFolders.RemovableDevices;
StorageFolder sdCard = (await SDDevice.GetFoldersAsync()).FirstOrDefault();
await sdCard.CreateFileAsync("test.txt", CreationCollisionOption.ReplaceExisting)
要完成上述工作,您需要在 package.appxmanifest 文件中声明功能和 FileTypeAssociations 。
有a little issue with VS and Windows Phone 8.1 Silverlight - 您需要手动添加 FileTypeAssociations 。
答案 1 :(得分:2)
上面写的所有内容都是正确的,但这里有一些你需要了解的问题。在过去的几天里,我一直在用一些间歇性的问题撕掉我的头发,最值得注意的是,当简单地调用Windows.Storage.KnownFolders.RemovableDevices并记录所有设置时,会出现ACCESS_DENIED错误。
1 ...首先,重要的是要了解您的清单中至少需要一个fileTypeAssociation才能调用第一行Windows.Storage.KnownFolders.RemovableDevices。 2 ...其次,要在mainfest文件中注册对fileTypeAssociations的任何更改,您必须在调试之前在设备或模拟器上卸载应用程序(这会导致我几个小时的问题,主要是因为我不相信需要一个fileTypeAssociation来获取SD卡的句柄。)
希望这有助于节省一些头发。