首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

Windows 八 Metro App开发[22]Windows 8: WinRT中文件的正确读写方法

2012-09-16 
Windows 8 Metro App开发[22]Windows 8: WinRT中文件的正确读写方法注:本文由BeyondVincent(破船)原创首发

Windows 8 Metro App开发[22]Windows 8: WinRT中文件的正确读写方法

注:本文由BeyondVincent(破船)原创首发

        转载请注明出处:BeyondVincent(破船)@DevDiv.com


本文章主要内容如下

1、读取Isolated Storage

2、读取工程中的文件

3、通过文件选取器(File Picker)读取本地文件

4、不通过文件选取器(File Picker)读取本地文件


在Windows 8 Metro开发中开始使用WinRT;在WinRT中有一些新的名称空间----名称空间是在.Net Framework中使用的。可能你认为你知道,但是你可能不知道。

    MSDN:在一些情况下,.Net Framework 桌面程序所使用的type,在.NET APIs(Metro style apps)中并不存在。代替的方法是,使用Windows Runtime中的type。例如,System.IO.IsolatedStorage。IsolatedStorageSettings并不包含在.NET APIs(Metro style apps)中,相反Windows.Storage.ApplicationDataContainer提供了存储程序设置的功能.常见的变化例子你可能需要看这里的内容: Converting your existing .NET Framework code。


1、读取Isolated Storage

每个Metro程序都有三个文件夹:Local, Roaming,Temp。每个文件夹的访问方法都是相同的.

    Local用于将数据存储在本地,这是程序特定的文件夹.

    Roaming存储的文件可能会用于与其他程序进行同步.

    Temp中的文件,在程序每次启动的时候都有可能被清除.

下面的代码是如何使用它们:



第二步

修改文件的生成操作为内容.并将复制到输出目录修改为始终复制.这将确保文件在程序中.不这样做的话,读取不到文件.


第三步

读取文件内容,代码如下:



将文档库访问勾上.这是你可能注意到了功能Tab标题有个红色的X.这表示有错误.如何修改呢.

需要修改声明Tab里面的文件类型

注意,文件类型的设置不能是*.*

如下图(这里我只访问txt文件,所以只添加.txt)

Windows 八 Metro App开发[22]Windows 8: WinRT中文件的正确读写方法


现在,可以读取文件内容了

下面的代码我创建了一个HelloWorld.txt文件,并进行了读写操作.最后,我将该文件删除

async void LocalFileWithoutPicker(){    var _Name = "HelloWorld.txt";    var _Folder = KnownFolders.DocumentsLibrary;    var _Option = Windows.Storage.CreationCollisionOption.ReplaceExisting;    // create file     var _File = await _Folder.CreateFileAsync(_Name, _Option);    // write content    var _WriteThis = "Hello world!";    await Windows.Storage.FileIO.WriteTextAsync(_File, _WriteThis);    // acquire file    try { _File = await _Folder.GetFileAsync(_Name); }    catch (FileNotFoundException) { /* TODO */ }    // read content    var _Content = await FileIO.ReadTextAsync(_File);    await new Windows.UI.Popups.MessageDialog(_Content).ShowAsync();    await _File.DeleteAsync();}
上面的代码可以很好的运行,那是因为我在AppXManifest文件中声明了从文档库文件夹中读取txt文件的功能.
如果你在manifest中请求了如下功能:文档,图片,音乐,视频等,那么可以在库中枚举出这些文件.需要注意的是返回某个文件夹中的文件将根据manifest中声明的文件类型被自动过滤.

热点排行