现在的位置: 首页 > 综合 > 正文

WP独立存储的实现

2013年12月03日 ⁄ 综合 ⁄ 共 1555字 ⁄ 字号 评论关闭

在 Windows Phone 中,档案的存取或是想要写入一些暂存的数据等,都必须要在隔离储存区中去操作,不同的应用程序之间是不能够相互的存取的,在这一节当中,笔者会介绍要如何去建立、图取隔离储存区中的档案。

那么,在一开始您可以会有个疑问,『我可以使用多少的空间呢?有没有限制大小?』;以目前来说,应用程序在使用隔离储存区的时候是没有限制大小的,您可以很自由的去使用,但也必须要注意『适当』的使用,毕竟装置的储存空间总量也是有上限的。

那么为什么不设定一个大小让应用程序来使用呢?笔者猜想,在 Windows Phone 应用程序中,去初始设定大小让每个应用程序使用是不适合的,有的应用程序需要比较多的储存空间,而有的应用程序需要的很少,甚至根本用不到储存空间,而正因为装置上的总储存空间是有限的,所以要更有效的去利用这些储存空间,所以才会使用『让需要的去使用』这样的自由方式。

而在使用隔离储存区时,首先会用到的就是 IsolatedStorageFile 这个类别,我们必须先取得给应用程序使用的隔离储存区,例如说

IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForApplication();

建立了 IsolatedStorageFile 之后,就可以利用 CreateDirectory 或是 CreateFile 的方式来建立档案或是文件夹;而当呼叫 CreateFile 或是 OpenFile 时,会回传一个 IsolatedStorageFIleStream,例如说

IsolatedStorageFileStream myStream = isoFile.CreateFile("tmp.txt");

之后可以直接利用这个 IsolatedStorageFIleStream 来做档案相关的操作,不过由于这是最基本的 Stream 类别,只能以字节数组的方式来操作,会比较不方便一些,所以您也可以将这个 Stream 带入到像是 StreamWriterStreamReader 中来使用,例如

IsolatedStorageFileStream myStream = isoFile.CreateFile("tmp.txt");

System.IO.StreamWriter SW = new System.IO.StreamWriter(myStream);

SW.WriteLine("Some text here");

SW.Close();

SW.Dispose();

那如果说想要将目前储存区所有的档案列出来应该要怎么做呢?我们可以藉由下面的方法来达成

IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForApplication();

//列出根目錄中的檔案

foreach (var filename in isoFile.GetFileNames())

{

     txtList.Text += "/" + filename + Environment.NewLine;

}

//列出各資料夾名稱以及其下的檔案

foreach (var item in isoFile.GetDirectoryNames())

{

     foreach (var filename in isoFile.GetFileNames(item + "/"))

     {

         txtList.Text += "/" + item + "/" + filename + Environment.NewLine;

     }

}

isoFile.Dispose();

抱歉!评论已关闭.