26.6 独立存储机制
当应用程序在文件中存储数据时,必须小心选择文件名和存储位置,最大程度地减小其他应用程序,知道该存储位置的可能性,从而使数据不易受到损坏。如果没有标准的系统来处理这些问题,想开发出能最大程度地减少存储冲突的特别技术可能并非易事,而且开发出来的技术也不见得可靠。
通过使用独立存储,数据将始终按用户和程序集进行隔离。程序集的源或强名称等凭据确定程序集的身份。通过使用类似的凭据,数据还可以按应用程序域进行隔离。
独立存储区就像一个虚拟文件夹。用户不需要知道文件存储的确切位置。你所做的就是告诉.NET Framework在独立存储区存储你的文件。对于不同的操作系统,独立存储区的物理位置是不同的。在你的应用程序中,简单地使用.NET中的类创建和访问文件,不需要担心文件存储的物理位置。
要使用独立存储功能,需要使用.NET提供的IsolatedStorageFile类和IsolatedStorageFileStream类,它们位于System.IO.IsolatedStorage命名空间。其中,IsolatedStorageFile类表示可供应用程序存储数据的独立存储数据区,如表26-3所示。
下面的代码演示对独立存储区的基本操作:创建、修改、读取、删除操作,如代码清单26-13所示。
代码清单26-13 独立存储数据区的基本文件操作
using System;
using System.IO;
using System.IO.IsolatedStorage;
namespace ProgrammingCSharp4
{
class IsolatedStorageSample
{
static void Main(string[]args)
{
string isolatedFileName="DemoIsolatedFile.txt";
IsolatedStorageFile isoStore;
IsolatedStorageFileStream isoStream;
StreamWriter myWriter;
StreamReader myReader;
string lineFromIsolatedFile;
//存储数据的独立存储区域
isoStore=IsolatedStorageFile.GetUserStoreForAssembly();//用户和程序集范围
//isoStore=IsolatedStorageFile.GetMachineStoreForAssembly();//计算
机和程序集范围
//isoStore=IsolatedStorageFile.GetUserStoreForApplication();//用户
和应用程序范围
//创建
isoStream=new IsolatedStorageFileStream(isolatedFileName,
FileMode.Create,isoStore);
myWriter=new StreamWriter(isoStream);
myWriter.WriteLine(“写入到独立存储区”);
myWriter.WriteLine(“是一件非常容易的事.”);
myWriter.Close();
//读取
isoStream=new IsolatedStorageFileStream(isolatedFileName,
FileMode.Open,isoStore);
myReader=new StreamReader(isoStream);
while((lineFromIsolatedFile=myReader.ReadLine())!=null)
{
Console.WriteLine(lineFromIsolatedFile);
}
myReader.Close();
//修改
isoStream=new IsolatedStorageFileStream(isolatedFileName,
FileMode.Append,isoStore);
myWriter=new StreamWriter(isoStream);
myWriter.WriteLine(“新的一行”);
myWriter.Close();
//删除
//isoStore.DeleteFile(isolatedFileName);
}
}
}