WEB开发网
开发学院图形图像Flash Silverlight(16) - 2.0数据之独立存储(Isolated S... 阅读

Silverlight(16) - 2.0数据之独立存储(Isolated Storage)

 2008-12-08 11:51:57 来源:WEB开发网   
核心提示: IsolatedStorage.xaml.csusing System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows

IsolatedStorage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
  
using System.IO.IsolatedStorage;
using System.IO;
  
namespace Silverlight20.Data
{
  public partial class IsolatedStorage : UserControl
  {
    public IsolatedStorage()
    {
      InitializeComponent();
  
      // 演示 IsolatedStorageFile
      Demo();
  
      // 演示 IsolatedStorageSettings
      Demo2();
    }
  
    /**//// <summary>
    /// 演示 IsolatedStorageFile
    /// </summary>
    void Demo()
    {
      // Isolated Storage - 独立存储。一个虚拟文件系统
  
      // IsolatedStorageFile - 操作 独立存储 的类
      //   IsolatedStorageFile.GetUserStoreForSite() - 按站点获取用户的独立存储
      //   IsolatedStorageFile.GetUserStoreForApplication() - 按应用程序获取用户的独立存储
      
      // using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForSite())
      using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
      {
        // DirectoryExists(path) - 指定的路径是否存在
        // CreateDirectory(path) - 创建指定的路径
        // FileExists(path) - 指定的文件是否存在
        // CreateFile(path) - 创建指定的文件
        // GetDirectoryNames() - 获取根目录下的目录名数组
        // GetFileNames()() - 获取根目录下的文件名数组
        // GetDirectoryNames(path) - 获取指定目录下的目录名数组
        // GetFileNames(path) - 获取指定目录下的文件名数组
        // OpenFile() - 打开指定的文件。具体参数参看文档
        // DeleteFile(path) - 删除指定的文件
        // DeleteDirectory(path) - 删除指定的目录(要求目录存在,且目录内无内容)
        // Remove() - 关闭 IsolatedStorageFile 对象并移除独立存储内的全部内容
  
        // 在根目录下创建指定的目录
        if (!isf.DirectoryExists("Directory01"))
          isf.CreateDirectory("Directory01");
        if (!isf.DirectoryExists("Directory02"))
          isf.CreateDirectory("Directory02");
  
        // 创建指定的子目录
        string subDirectory01 = System.IO.Path.Combine("Directory01", "SubDirectory01");
        string subDirectory02 = System.IO.Path.Combine("Directory01", "SubDirectory02");
        if (!isf.DirectoryExists(subDirectory01))
          isf.CreateDirectory(subDirectory01);
        if (!isf.DirectoryExists(subDirectory02))
          isf.CreateDirectory(subDirectory02);
  
        // 根目录下创建指定的文件
        if (!isf.FileExists("RootFile.txt"))
        {
          IsolatedStorageFileStream isfs = isf.CreateFile("RootFile01.txt");
          isfs.Close();
        }
  
        // 在指定的目录下创建指定的文件
        string file01 = System.IO.Path.Combine(subDirectory01, "File01.txt");
        string file02 = System.IO.Path.Combine(subDirectory01, "File02.txt");
        string file03 = System.IO.Path.Combine(subDirectory01, "File03.xml");
        if (!isf.FileExists(file01))
        {
          // IsolatedStorageFileStream - 独立存储内的文件流。继承自 FileStream
          IsolatedStorageFileStream isfs = isf.CreateFile(file01);
          isfs.Close();
        }
        if (!isf.FileExists(file02))
        {
          IsolatedStorageFileStream isfs = isf.CreateFile(file02);
          isfs.Close();
        }
        if (!isf.FileExists(file03))
        {
          IsolatedStorageFileStream isfs = isf.CreateFile(file03);
          isfs.Close();
        }
  
        txtMsg.Text += "根目录下的目录列表:rn";
        // 获取根目录下的目录名数组
        foreach (string directoryName in isf.GetDirectoryNames())
        {
          txtMsg.Text += directoryName + "rn";
        }
  
        txtMsg.Text += "根目录下的文件列表:rn";
        // 获取根目录下的文件名数组
        foreach (string fileName in isf.GetFileNames())
        {
          txtMsg.Text += fileName + "rn";
        }
  
        txtMsg.Text += "目录 Directory01 下的目录列表:rn";
        // 获取 Directory01 目录下的目录名数组
        foreach (string directoryName in isf.GetDirectoryNames(subDirectory01))
        {
          txtMsg.Text += directoryName + "rn";
        }
  
        txtMsg.Text += "目录 Directory01/SubDirectory01 下的*.txt文件列表:rn";
        // 获取 Directory01/SubDirectory01 目录下的后缀名为 txt 的文件名数组
        foreach (string fileName in isf.GetFileNames(System.IO.Path.Combine(subDirectory01, "*.txt")))
        {
          txtMsg.Text += fileName + "rn";
        }
  
        if (isf.FileExists(file01))
        {
          // 在文件 file01 中写入内容
          IsolatedStorageFileStream streamWrite = isf.OpenFile(file01, FileMode.Open, FileAccess.Write);
          using (StreamWriter sw = new StreamWriter(streamWrite))
          {
            sw.WriteLine("我是:webabcd");
            sw.WriteLine("我专注于asp.net, Silverlight");
          }
  
          txtMsg.Text += "文件 File01.txt 的内容:rn";
          // 读取文件 file01 中的内容
          IsolatedStorageFileStream streamRead = isf.OpenFile(file01, FileMode.Open, FileAccess.Read);
          using (StreamReader sr = new StreamReader(streamRead))
          {
            txtMsg.Text += sr.ReadToEnd();
          }
        }
  
        // 删除文件 file01
        if (isf.FileExists(file01))
        {
          isf.DeleteFile(file01);
        }
  
        try
        {
          // 删除目录 subDirectory01
          isf.DeleteDirectory(subDirectory01);
        }
        catch (IsolatedStorageException ex)
        {
          // IsolatedStorageException - 操作临时存储失败时抛出的异常
  
          // 因为 subDirectory01 目录内还有文件,所以会抛异常
          txtMsg.Text += ex.Message;
        }
      }
    }
  
    /**//// <summary>
    /// 演示 IsolatedStorageSettings
    /// </summary>
    void Demo2()
    {
      // IsolatedStorageSettings - 在独立存储中保存的 key-value 字典表
      //   IsolatedStorageSettings.SiteSettings - 按站点保存的 key-value 字典表
      //   IsolatedStorageSettings.ApplicationSettings - 按应用程序保存的 key-value 字典表
  
      IsolatedStorageSettings iss = IsolatedStorageSettings.ApplicationSettings;
  
      // Add(key, value) - 添加一对 key-value
      iss.Add("key", "value");
      txtMsg2.Text += (string)iss["key"] + "rn";
  
      // 修改指定的 key 的 value
      iss["key"] = "value2";
      txtMsg2.Text += (string)iss["key"] + "rn";
  
      // Remove(key) - 移除指定的 key
      // Count - 字典表内的总的 key-value 数
      iss.Remove("key");
      txtMsg2.Text += iss.Count;
    }
   
    private void increase_Click(object sender, RoutedEventArgs e)
    {
      // 演示独立存储的配额的相关操作
      using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
      {
        // Quota - 当前配额(KB)
        // IncreaseQuotaTo(newQuotaSize) - 增加到指定的配额
        // AvailableFreeSpace - 当前的可用配额
  
        isf.IncreaseQuotaTo(isf.Quota + 1 * 1024 * 1024);
  
        System.Windows.Browser.HtmlPage.Window.Alert(
          string.Format("当前配额:{0};可用配额:{1}", isf.Quota, isf.AvailableFreeSpace));
      }
    }
  }
}

演示 IsolatedStorageFile 的运行结果:

根目录下的目录列表:

Directory01

Directory02

根目录下的文件列表:

RootFile01.txt

__LocalSettings

目录 Directory01 下的目录列表:

SubDirectory01

目录 Directory01/SubDirectory01 下的*.txt文件列表:

File01.txt

File02.txt

文件 File01.txt 的内容:

我是:webabcd

我专注于asp.net, Silverlight

无法删除,目录不为空或不存在。

演示 IsolatedStorageSettings 的运行结果:

value

value2

0

OK

上一页  1 2 

Tags:Silverlight 数据 独立

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接