1.IsolatedStorage的定义和作用
独立存储(IsolatedStorage)是Silverlight中提供的一个客户端安全的虚拟文件系统。由于Silverlight限制了客户端Silverlight应用程
序不能访问文件系统,只能通过独立存储机制提供虚拟文件系统,访问数据流对象,支持使用File和Directory等类访问和维护文件或文件夹
。在独立存储空间内可以放置任意类型的文件,如XML文件、TXT文件、图片、视频等。每个Silverlight应用程序都被分配了属于它自己的独
立存储空间。如果应用程序中存在多个程序集,那么存储空间在这多个程序集之间是共享的,但不能长期保存数据,默认大小为2GB。开发者
在设计应用程序时,需要创建文件或存放数据时,都可以使用IsolatedStorage。
2.IsolatedStorage的使用方法
首先是添加引用
using System.IO
using System.IO.IsolatedStorage
//申明一个IsolatedStorage文件对象
IsolatedStorageFile _isf;
//初始化对象
_isf = IsolatedStorageFile.GetUserStoreForApplication();
先来演示使用数据流创建IsolatedStorage文件:
//创建一个文件名为test.txt的IsolatedStorageFileStream
IsolatedStorageFileStream filestream = new IsolatedStorageFileStream("test.txt",FileMode.Create,FileAccess.Write,_isf);
StreamWriter writer = new StreamWriter(filestream);
writer.WriteLine("This is a test");//向test.txt文件中写入一行字符串
writer.Close();//一定要将writer关闭,不然会出错
这样就在客户端虚拟文件系统创建了一个txt文件,当然也可以参考创建其他类型的文件。
下面来演示如何读取IsolatedStorage中的文件
IsolatedStorageFileStream filestream = new IsolatedStorageFileStream("test.txt",FileMode.Open,FileAccess.Read,_isf);
StreamReader reader = new StreamReader(filestream);
String str = reader.ReadToEnd();//将test.txt文件中的数据从头到尾读取到str中
//此时str的内容就为“This is a test”
reader.Close();//一定要将writer关闭,不然会出错
此外,reader还可以Read、ReadLine、ReadBlock等不同类型的读取函数。
最后演示如何删除IsolatedStorage中的文件
_isf.DeleteFile("test.txt");//直接删除文件
请记住,在独立存储区中,文件名和目录名是与操作系统相关的(在 Microsoft Windows 系统中通常不区分大小写),并且是根据虚文件
系统的根目录具体而定的。IsolatedStoreFile 类提供了两种删除目录和文件的实例方法:DeleteDirectory 和 DeleteFile。 如果尝试删
除并不存在的文件和目录,则会引发 IsolatedStorageFileException。 如果名称中包含有通配符,则 DeleteDirectory 会引发
IsolatedStorageFileException,而 DeleteFile 将引发 ArgumentException。如果目录中包含任何文件或子目录,DeleteDirectory 将会
失败。 在IsolatedStorageFile中提供一个DeletingFilesAndDirectories方法,该方法删除目录中的所有内容,然后删除目录本身。 同样
,您可以自己定义一个接受通配符的 DeleteFiles 方法,方法为:使用 GetFileNames 方法获取所有匹配文件的列表,然后依次删除每个文
件。