...无论如何将 StorageFile 对象转换为流...
您可以StorageFile.OpenAsync(FileAccessMode.ReadWrite)
用于写作和 StorageFile.OpenAsync(FileAccessMode.Read)
阅读。
至于
win10 安全限制(需要用户权限来访问区域等,防止传统的基于 File.Write/path 的访问,而不是您的应用程序数据目录)。
您可以利用PublisherCacheFolder:
Windows 运行时应用的强大安全模型通常会阻止应用在它们之间共享数据。但是,对于来自同一发布者的应用程序而言,在每个用户的基础上共享文件和设置可能很有用。作为应用发布者,您可以通过向应用清单添加扩展来注册您的应用以与您发布的其他应用共享存储文件夹。
您可以参考以下代码片段:
StorageFolder sharedFonts = Windows.Storage.ApplicationData.Current.GetPublisherCacheFolder("test");
var testFile = await sharedFonts.CreateFileAsync("test.txt", CreationCollisionOption.OpenIfExists);
var byteArray = new byte[] { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a };
using (var sourceStream = new MemoryStream(byteArray).AsRandomAccessStream())
{
using (var destinationStream = (await testFile.OpenAsync(FileAccessMode.ReadWrite)).GetOutputStreamAt(0))
{
await RandomAccessStream.CopyAndCloseAsync(sourceStream, destinationStream);
}
}
var readArray = new byte[100];
using (var destinationStream = new MemoryStream(readArray).AsRandomAccessStream())
{
using (var sourceStream = (await testFile.OpenAsync(FileAccessMode.Read)).GetInputStreamAt(0))
{
await RandomAccessStream.CopyAndCloseAsync(sourceStream, destinationStream);
}
}
更新:
你可以转换IRandomAccessStream
成System.IO.Stream
这样:
Stream writeStream = destinationStream.AsStreamForWrite();
Stream readStream = sourceStream.AsStreamForRead();