26.6 独立存储机制

当应用程序在文件中存储数据时,必须小心选择文件名和存储位置,最大程度地减小其他应用程序,知道该存储位置的可能性,从而使数据不易受到损坏。如果没有标准的系统来处理这些问题,想开发出能最大程度地减少存储冲突的特别技术可能并非易事,而且开发出来的技术也不见得可靠。

通过使用独立存储,数据将始终按用户和程序集进行隔离。程序集的源或强名称等凭据确定程序集的身份。通过使用类似的凭据,数据还可以按应用程序域进行隔离。

独立存储区就像一个虚拟文件夹。用户不需要知道文件存储的确切位置。你所做的就是告诉.NET Framework在独立存储区存储你的文件。对于不同的操作系统,独立存储区的物理位置是不同的。在你的应用程序中,简单地使用.NET中的类创建和访问文件,不需要担心文件存储的物理位置。

要使用独立存储功能,需要使用.NET提供的IsolatedStorageFile类和IsolatedStorageFileStream类,它们位于System.IO.IsolatedStorage命名空间。其中,IsolatedStorageFile类表示可供应用程序存储数据的独立存储数据区,如表26-3所示。

26.6 独立存储机制 - 图1

下面的代码演示对独立存储区的基本操作:创建、修改、读取、删除操作,如代码清单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);

}

}

}