Silverlight实用窍门系列:49.Silverlight中管理独立存储--Isolated Storage【附带实例源码】
2011-07-25 10:03
603 查看
Silverlight中的独立存储是其内部的可信任的可访问文件空间,在这里你可以使用Silverlight随意的创建、读取、写入、删除目录和文件,它有一些类似于Cookie,但是它可以在客户端保存大量的数据。这个空间默认是1M,如果不够的时候可以申请扩大容量。
网站+用户+应用程序定位一个独立存储,也就是说必须得相同网站,相同用户,相同应用程序才能够访问这个独立的存储空间。独立存储是IsolatedStorageFile密封类来进行设置的,这个类分布在命名空间System.IO.IsolatedStorag。我们引用System.IO命名空间对文件进行操作。下面我们来看一个演示的Xaml代码如下:
然后我们来看Xaml.cs代码中使用IsolatedStorageFile对独立存储进行添加目录,添加文件,读取文件,删除文件及目录,扩展独立存储空间等操作。
现在我们来看看如何去看独立存储中的文件夹以及文件,在下图位置设置断点,然后调试,先点击"设置独立存储",然后点击"获取独立存储",然后安装下面去找到m_AppFilesPath字段的值,复制这个值到Windows文件夹的地址栏,按下确定键即可进入独立存储空间的目录下。在这里你可以看到以下的独立存储文件夹。
最后我们看看运行效果如下,如需源码请点击 SLStorage.zip 下载。
网站+用户+应用程序定位一个独立存储,也就是说必须得相同网站,相同用户,相同应用程序才能够访问这个独立的存储空间。独立存储是IsolatedStorageFile密封类来进行设置的,这个类分布在命名空间System.IO.IsolatedStorag。我们引用System.IO命名空间对文件进行操作。下面我们来看一个演示的Xaml代码如下:
<Grid x:Name="LayoutRoot" Background="White"> <Button Content="设置独立存储" Height="23" HorizontalAlignment="Left" Margin="29,79,0,0" Name="btnSetStorage" VerticalAlignment="Top" Width="75" Click="btnSetStorage_Click" /> <Button Content="清空独立存储" Height="23" HorizontalAlignment="Left" Margin="268,79,0,0" Name="btnClearStorage" VerticalAlignment="Top" Width="75" Click="btnClearStorage_Click" /> <Button Content="获取独立存储列表" Height="23" HorizontalAlignment="Left" Margin="142,79,0,0" Name="btnGetStorage" VerticalAlignment="Top" Width="107" Click="btnGetStorage_Click" /> <ListBox Height="165" HorizontalAlignment="Left" Margin="12,123,0,0" Name="listBox1" VerticalAlignment="Top" Width="166" /> <ListBox Height="165" HorizontalAlignment="Left" Margin="198,123,0,0" Name="listBox2" VerticalAlignment="Top" Width="166" /> <Button Content="读取" Height="23" HorizontalAlignment="Left" Margin="365,79,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /> <sdk:Label Height="28" HorizontalAlignment="Left" Margin="370,123,0,0" Name="label1" VerticalAlignment="Top" Width="189" /> <sdk:Label Height="28" HorizontalAlignment="Left" Margin="370,181,0,0" Name="label2" VerticalAlignment="Top" Width="189" /> </Grid>
然后我们来看Xaml.cs代码中使用IsolatedStorageFile对独立存储进行添加目录,添加文件,读取文件,删除文件及目录,扩展独立存储空间等操作。
public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } private void btnSetStorage_Click(object sender, RoutedEventArgs e) { using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) { //创建First父目录 if(!storage.DirectoryExists("FatherFirstDir")) { storage.CreateDirectory("FatherFirstDir"); //创建子目录 string SonDir = Path.Combine("FatherFirstDir", "SonFirstDir"); storage.CreateDirectory(SonDir); //创建文件 IsolatedStorageFileStream fileStream = storage.CreateFile(Path.Combine(SonDir, "First.txt")); using (StreamWriter swriter = new StreamWriter(fileStream)) { swriter.Write("这是第一个程序txt"); } fileStream.Close(); } //创建Secend父目录 if (!storage.DirectoryExists("FatherSecendDir")) { storage.CreateDirectory("FatherSecendDir"); //在一级目录下添加一个文件 IsolatedStorageFileStream fileStream = storage.CreateFile(Path.Combine("FatherSecendDir", "second.txt")); using (StreamWriter swriter = new StreamWriter(fileStream)) { swriter.Write("新的txt程序"); } fileStream.Close(); } //当前的独立存储状态 this.label1.Content = "最大空间量:" + storage.Quota + " 已使用量:" + storage.UsedSize; //获取文件First.txt的值 using (StreamReader reader = new StreamReader(storage.OpenFile("FatherFirstDir\\SonFirstDir\\First.txt", FileMode.Open, FileAccess.Read))) { this.label2.Content = reader.ReadToEnd(); } } } private void btnGetStorage_Click(object sender, RoutedEventArgs e) { //获取文件夹中的文件以及所有的文件夹名称 using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) { if (storage.DirectoryExists("FatherSecendDir")) { String[] fileList = storage.GetFileNames("FatherSecendDir/"); this.listBox1.ItemsSource = fileList; String[] dirList = storage.GetDirectoryNames("*"); this.listBox2.ItemsSource = dirList; } } } private void btnClearStorage_Click(object sender, RoutedEventArgs e) { //删除所有的文件以及文件夹 using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) { //在这里简单做一个判断,实际应用过程中不可 if (storage.FileExists("FatherFirstDir\\SonFirstDir\\First.txt")) { storage.DeleteFile("FatherFirstDir\\SonFirstDir\\First.txt"); storage.DeleteDirectory("FatherFirstDir\\SonFirstDir"); storage.DeleteDirectory("FatherFirstDir"); storage.DeleteFile("FatherSecendDir\\second.txt"); storage.DeleteDirectory("FatherSecendDir"); } } } private void button1_Click(object sender, RoutedEventArgs e) { int addSpaceSize = 2097152; //增加最大独立存储空间量 using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) { if (storage.AvailableFreeSpace < addSpaceSize) { storage.IncreaseQuotaTo(storage.Quota+ addSpaceSize); } this.label1.Content = "最大空间量:" + storage.Quota + " 已使用量:" + storage.UsedSize; } } }
现在我们来看看如何去看独立存储中的文件夹以及文件,在下图位置设置断点,然后调试,先点击"设置独立存储",然后点击"获取独立存储",然后安装下面去找到m_AppFilesPath字段的值,复制这个值到Windows文件夹的地址栏,按下确定键即可进入独立存储空间的目录下。在这里你可以看到以下的独立存储文件夹。
最后我们看看运行效果如下,如需源码请点击 SLStorage.zip 下载。
相关文章推荐
- Silverlight实用窍门系列:49.Silverlight中管理独立存储--Isolated Storage【附带实例源码】
- Silverlight实用窍门系列:32.WebClient上传String、下载String、上传Stream流、下载Stream流【附带源码实例】
- Silverlight实用窍门系列:24.Silverlight多线程技术BackgroundWorker的应用,更新ProgressBar控件【附带源码实例】
- Silverlight实用窍门系列:5.绑定webService数据到DataGrid,设置DataGrid模板,模拟数据库数据的绑定【附带实例源码】
- Silverlight实用窍门系列:51.Silverlight页面控件的放大缩小、Silverlight和Html控件的互相操作【附带源码实例】
- Silverlight实用窍门系列:28.Silverlight制作随机分布雷达扫描点,模拟雷达扫描图之被扫描设备【附带源码实例】
- Silverlight实用窍门系列:42.读取拖动到控件上的外部txt和jpg文件,多外部文件的拖动【附带实例源码】
- Silverlight实用窍门系列:17.中心点联动多线的可拖动控件(绘制工程图、拓扑图基础)【附带源码实例】
- Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】
- Silverlight实用窍门系列:27.Silverlight二维旋转+平面渐变+动画,模拟雷达扫描图之基本框架【附带源码实例】
- Silverlight实用窍门系列:6.Silverlight弹出窗口以及DataGrid分页【附带实例源码】
- Silverlight实用窍门系列:38.Silverlight读取服务器端格式化的Json数据【附带实例源码】
- Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】
- Silverlight实用窍门系列:23.Silverlight多线程技术Thread的应用,后台线程更新UI控件,向多线程传递参数【附带源码实例】
- Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】
- Silverlight实用窍门系列:33.OOB模式下WebBrowser的简单应用--模拟浏览器和百度地图【附带源码实例】
- Silverlight实用窍门系列:43.Silverlight从ListBox拖拽图标到另一ListBox【附带源码实例】
- Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】
- Silverlight实用窍门系列:21.循环访问WebService方法来看Silverlight下WebService异步请求【附带源码实例】
- Silverlight实用窍门系列:13.基于Popup浮动窗体控件模拟ToolTip的实现【附带实例源码】