(牛人莫入)Silverlight 独立文件存储

如果你目前知道了解掌握了这些内容的SL爱好者不建议阅读;

阅读对象:本篇文章适合对SL有一定的基础性的,了解SL朋友进行阅读;此篇文章没有什么难的代码,掌握独立文件存储的方式就可以了,如何把

独立文件存储在自己的项目中去;就可以了;

一、什么是SL的独立文件存储呢?

Silverlight 代码本身是不能去操作系统的,说白了就是他不能对你的系统的文件去做一些CRUD(在你的系统中创建文件,删除文件,ect);

如果允许做这样的操作,那么也要启用IE的安全模式;但是在Silverlight 应用程序中又须要用到数据的存储这个功能,SL会调用到Isolated Storage(独立存储)

这种存储方式将提供一个磁盘存储空间,他是一种虚拟的文件系统,能存储小量的数据;在默认的情况下,它只能存储1MB的文件;用户可能根据自己的要求可以对

空间的大小进行合理的分配;

 

二、独立文件的操作;

我们可以用到Syste.IO这个命名空间下的IsolateStorageFiel类,我们将得到一个IslatedStorageFile对象的当前应用程序用IsolatedStorageFile.GetUserStoreForApplicttion,如下所示:

IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();

IsolatedStorageFile 常用的方法如下:

方法名 备注
CreateDirectory() 创建一个新的独立存储文件夹
DeleteDirectory() 删除独立存储文件夹
CreateFile() 创建文件
DeleteFile() 删除文件
Remove() 移出所有的文件和文件夹
GetFileNames() 得到文件名称集合
GetDirectoryNames() 得到文件夹名称集合
OpenFile() 打开文件

 

 

SL中独立文件的读写操作与我们操作用到的文件数据的操作基本是一样,StreamWrite,StreamRead这两个方法;

在这里创建一个名为“cao.txt”的文件,并写入当前的时间;他的文件写如代码如下:

  //文?件t的?写′入?
            try
            {
                using (IsolatedStorageFile store =
                IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (IsolatedStorageFileStream stream = store.CreateFile("cao.txt"))
                    {
                        StreamWriter writer = new StreamWriter(stream);
                        writer.Write(DateTime.Now);
                        writer.Close();
                    }
                    MessageBox.Show("文?件t写′入?成é功|");
                }
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message.ToString());
            }

现在文件的信息写入进去,我们应该怎么读出呢?代码如下:

try
            {
                using (IsolatedStorageFile store =
                IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (IsolatedStorageFileStream stream = store.OpenFile("date.txt",
                    FileMode.Open))
                    {
                        StreamReader reader = new StreamReader(stream);
                        lblData.Text = reader.ReadLine();
                        reader.Close();
                    }
                }
            }
            catch (Exception err)
            {
                
                MessageBox.Show(err.Message.ToString());
            }
通过对文件的读取时我们对它调试不难找到他的存储位置,

C:\Users\matthew\AppData\LocalLow\Microsoft\Silverlight\is\sid3dsxe.u1y\lstesiyg.ezx
\s\atkj2fb5vjnabwjsx2nfj3htrsq1ku1h\f\cao.txt,不能的操作系统他所放的文件位置是不一样的,可能通过调试来找到;

三、自己的理解

文件的读写操作都可以了,这时我们可以联想到ASP。NET中的相同的文件了,在ASP。NET中也有一个COOKIE,它也是写在我们的客户端的,

可能保存一些用户的信息,在这里我就不对ASP。NET中的COOKIE作过多的解释了;说得更让人理解一点,Silverlight 中的独立文件的存储与COOKIE有一点相

同,但是目前我也只对它有这么多的研究,它也可以来解决在项目中保存用户的登陆信息的,这里也有一个安全性的问题,大家可以根据自己的要求去解决;

 

本文是作者参考了Apress Pro. Silverligth 2,Apress Pro. Silverligth 3,相关的文档,以及MSDN官方文档,写给自己的学习笔记,本文只供参考;

由于自己的理解能力有限,难免会有所理解不正确的地方,希望大家指正;

 

作者::good man(一起学习,共同进步)
出处:http://www.cnblogs.com/caodaiming
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2009-11-29 19:19  阳光追梦  阅读(3183)  评论(8编辑  收藏  举报
/*快速评论*/ #div_digg { position: fixed; bottom: 10px; right: 15px; border: 2px solid #ECD7B1; padding: 10px; width: 140px; background-color: #fff; border-radius: 5px 5px 5px 5px !important; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); } /** 不知道为什么页面加载完成时还读不到div_digg。可能也是动态生成的。 所以这里只能用定时器 不断的读取,当读取到了再给它动态添加快捷按钮 **/ //自定义 定时器[当元素加载完成是执行回调函数] function customTimer(inpId,fn) { if ($(inpId).length) { fn(); } else { var intervalId = setInterval(function () { if ($(inpId).length) { //如果存在了 clearInterval(intervalId); // 则关闭定时器 customTimer(inpId,fn); //执行自身 } }, 100); } } //页面加载完成是执行 $(function () { customTimer("#div_digg", function () { var div_html = "
\ 关注\  | \ 顶部\  | \ 评论\
"; $("#div_digg").append(div_html); //tbCommentBody }); });