在Windows Store的.NET中,FileStream在哪里?

13

我正在创建一个Windows Store应用程序,需要创建一个FileStream以便写入一些复杂数据到一个专有文件格式中。 我添加了System.IO到我的使用项,但是没有可用的FileStream。

我进行了进一步的调查,“.NET for Windows Store 应用程序概述”指南谈到了IsolatedStorage,但是这个库目前甚至都没有使用。 经过一些阅读,我认为真正的替代品可能是来自nacemspace:Windows.Storage.Streams的FileRandomAccessStream。

在Windows Store应用程序中使用的FileStream的真正等效物是什么?


1
http://msdn.microsoft.com/en-us/library/windows/apps/br230302.aspx#IO - SLaks
3
这个为什么被踩了?System.IO命名空间功能的消失也让我感到惊讶。我们不会降低自己到新手挖苦的水平,对吧? - Dabblernl
@Dabblernl 我来晚了。去年我在做几个大型SharePoint项目,没有时间尝试VS2012预览版或Windows 8预览版。现在我必须赶上进度,最近一直在阅读很多文章和MSDN帮助,发现大多数文章都是在2012年初甚至2011年末发布的,并且都充满了评论和争议。所以,对于所有参与这场争论的人来说,我的问题看起来很愚蠢和/或懒惰。 - Craig Stevensson
2个回答

14

事实上,沙盒有许多限制,在哪里可以读取/写入文件。以下是一些典型的位置:

如果您正在尝试从您的应用程序安装文件夹中加载资源,则可以使用以下方法:

  • StorageFolder installFolder = Windows.ApplicationModel.Package.Current.InstalledLocation

  • StorageFile file = await StorageFile.GetFileFromApplicationUriAsync("ms-appx:///file.txt");

(这是一个只读文件夹,因此您不能编辑或创建新文件。)

如果您想将数据文件写入您的应用程序数据文件夹,则可以使用以下方法:

  • StorageFolder localFolder = ApplicationData.Current.LocalFolder;

  • StorageFile file = await StorageFile.GetFileFromApplicationUriAsync("ms-appdata:///local/file.txt");

(这个文件夹是读写的。您还可以通过将local更改为另外两个中的一个来访问漫游临时文件夹。)

还有一些其他文件夹,比如DownloadsFolder,不过您只能访问应用程序下载的文件。

或者,您也可以始终使用FileOpenPickerFileSavePicker向用户请求权限。选择器不允许访问InstalledLocation路径,但会允许您访问DocumentsPicturesDownloads(即使您的应用程序没有下载该文件)。


太好了。我如何将这些对象与使用流的任何函数一起使用,例如序列化? - Quark Soup

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接