`
isiqi
  • 浏览: 15946973 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

windows phone 独立存储空间的操作

 
阅读更多

IsolatedStorage独立存储空间是保存应用程序的一些数据已经配置文件,独立存储空间相对于其他的wp程序是独立的,也就是说每个wp程序都会有自己的独立存储空间,每个wp程序相互之间不能访问;

什么是Isolated Storage?

Isolated Storage又叫做隔离存储空间,Windows Phone 7手机上用来本地存储数据。下图是一个存储应用的文件夹结构图:

IC381787

Isolated Storage用来创建与维护本地存储。WP7上的架构和Windows下的Silverlight类似,所有的读写操作都只限于隔离存储空间并且无法直接访问磁层操作系统的文件系统。这样能够防止非法的访问以及其他应用的破坏,增强安全性。

提示:如果你有两个应用想要共用一个同一个数据,则没法通过本地存储实现。你可以使用web服务等。

提示:WP7下的隔离存储空间没有配额的限制。应用应该只保存必要的数据。当Windows Phone只剩下10%的可用空间,用户会收到一个提醒并可能停止当前应用。对用户来讲这是一个很差的用户体验。

在隔离存储空间下可以进行目录操作、文件操作、应用程序配置信息等。

什么是Isolated Storage部分参考出处:http://www.cnblogs.com/zdave/archive/2011/05/06/2038924.html

  1. IsolatedStorageFile

    此类表示包含文件和目录的独立存储区

    IsolatedStorageFileisStore=IsolatedStorageFile.GetUserStoreForApplication();
    此类的实例化是得到整个程序的独立存储空间

    属性

    AvailableFreeSpace

    表示独立存储的可用空间量单位为字节

    Quota

    该值表示独立存储的最大可用空间量不能超过该值单位为字节

    方法

    CreateDirectory

    创建目录

    CreateFile

    创建文件

    DirectoryExists

    判断是否存在某个目录,删除目录之前可调用该方法

    DeleteDirectory

    删除创建的目录

    FileExists

    判断是否存在某个文件,删除文件之前可调用该方法

    DeleteFile

    删除传进的文件

    GetDirectoryNames(String)

    得到匹配的目录名称这里string支持通配符:单字节(“?”)和多字节(“*”)

    GetFileNames(String)

    得到匹配的文件名称这里string支持通配符:单字节(“?”)和多字节(“*”)

    GetUserStoreForApplication

    获取应用程序级的独立存储空间

    IncreaseQuotaTo

    比较重要的方法,增加独立存储空间空间量,但不可超过Quota

    Remove

    移除独立存储区范围及其所有内容,利用此方法必须先判断文件和目录是否正在使用,如果正在使用会有异常


  2. IsolatedStorageFileStream

    此类是文件流,实现对文件的操作

    IsolatedStorageFileStreamisStream=newIsolatedStorageFileStream("test\\TEST.txt",System.IO.FileMode.Open,FileAccess.Read,isStore);

    此实例化类是文件进行操作

    属性

    CanRead

    是否可读默认为true

    CanSeek

    是否可检索默认为true

    CanWrite

    是否可写默认为true

    Name

    文件流写入和读取的路径

    ReadTimeout

    设置的流读取超时时间

    WriteTimeout

    设置的写入流超时时间

    方法

    BeginRead

    在异步的时候用到,开始读取

    EndRead

    在异步的时候用到,读取结束

    BeginWrite

    在异步的时候用到,开始写入

    EndWrite

    在异步的时候用到,写入结束

    Close

    关闭当前流并释放相关资源

    CopyTo(Stream)

    从当前流读取所有字节并写入目标流

    WriteByte

    写入单个字节

    ReadByte

    读取单个字节

    Write

    写入字节块bytes

    Read

    读取文件获得字节块bytes

    SetLength

    限制流的长度


  3. 此类是存储一些配置信息,实例化

    复制代码
    varsettings=IsolatedStorageSettings.ApplicationSettings;

    //添加内容
    settings.Add("key",object);
    //保存
    settings.Save();
    //获取配置信息
    stringvalue=settings["key"].ToString();
    //out传参获取值
    stringvalue;
    settings.TryGetValue("key",outvalue);

    复制代码
  4. 初始化界面
    View Code
    复制代码
    <phone:PhoneApplicationPage
    x:Class="IsolatedStorageFileStreamApplication.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"d:DesignWidth="480"d:DesignHeight="768"
    FontFamily="{StaticResourcePhoneFontFamilyNormal}"
    FontSize="{StaticResourcePhoneFontSizeNormal}"
    Foreground="{StaticResourcePhoneForegroundBrush}"
    SupportedOrientations="Portrait"Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <!--LayoutRootistherootgridwhereallpagecontentisplaced-->
    <Gridx:Name="LayoutRoot"Background="Transparent">
    <Grid.RowDefinitions>
    <RowDefinitionHeight="Auto"/>
    <RowDefinitionHeight="*"/>
    </Grid.RowDefinitions>

    <!--TitlePanelcontainsthenameoftheapplicationandpagetitle-->
    <StackPanelx:Name="TitlePanel"Grid.Row="0"Margin="12,17,0,28">
    <TextBlockx:Name="ApplicationTitle"Text="MYAPPLICATION"Style="{StaticResourcePhoneTextNormalStyle}"/>
    <TextBlockx:Name="PageTitle"Text="pagename"Margin="9,-7,0,0"Style="{StaticResourcePhoneTextTitle1Style}"/>
    </StackPanel>

    <!--ContentPanel-placeadditionalcontenthere-->
    <Gridx:Name="ContentPanel"Grid.Row="1"Margin="12,0,12,0">
    <Buttonx:Name="btnWrite"Margin="0,400,300,100"Click="btnWrite_Click"Content="写操作"></Button>
    <Buttonx:Name="btnRead"Margin="150,400,150,100"Content="读操作"Click="btnRead_Click"IsEnabled="False"></Button>
    <Buttonx:Name="btnDel"Margin="300,400,10,100"Content="删除操作"Click="btnDel_Click"></Button>
    <TextBlockx:Name="txtShow"Margin="0,100,0,200"Text="显示读取的资料或者状态"HorizontalAlignment="Center"VerticalAlignment="Center"></TextBlock>
    </Grid>
    </Grid>
    </phone:PhoneApplicationPage>
    复制代码
  5. 删除操作
    View Code
    复制代码
    ///<summary>
    ///删除文件及路径
    ///</summary>
    ///<paramname="sender"></param>
    ///<paramname="e"></param>
    privatevoidbtnDel_Click(objectsender,RoutedEventArgse)
    {
    IsolatedStorageFileisoStore=IsolatedStorageFile.GetUserStoreForApplication();
    //判断是否存在
    if(isoStore.FileExists("test\\TEST.txt"))
    {
    //删除文件
    isoStore.DeleteFile("test\\TEST.txt");
    //删除目录
    isoStore.DeleteDirectory("test");
    //完全删除
    isoStore.Remove();
    //释放资源
    isoStore.Dispose();
    //配置信息
    varsettings=IsolatedStorageSettings.ApplicationSettings;
    //清空配置信息
    settings.Clear();
    }
    txtShow.Text="删除完成";

    }
    复制代码

  6. 写入操作
    View Code
    复制代码
    ///<summary>
    ///写操作
    ///</summary>
    ///<paramname="sender"></param>
    ///<paramname="e"></param>
    privatevoidbtnWrite_Click(objectsender,RoutedEventArgse)
    {
    IsolatedStorageFileisoStore=IsolatedStorageFile.GetUserStoreForApplication();
    //独立存储空间可用空间量
    longavailableSpace=isoStore.AvailableFreeSpace;
    //独立存储空间最大可用空间量
    longquota=isoStore.Quota;
    //独立存储空间的可用量扩充字节为单位
    //booldl=isoStore.IncreaseQuotaTo(quota);
    //创建目录
    isoStore.CreateDirectory("test");
    IsolatedStorageFileStreamisoStream=newIsolatedStorageFileStream("test\\TEST.txt",System.IO.FileMode.Create,isoStore);

    byteonlyOneByte=101;
    isoStream.WriteByte(onlyOneByte);

    isoStream.Close();
    isoStore.Dispose();
    btnRead.IsEnabled=true;
    txtShow.Text="写入完成";
    //存储配置信息
    varsettings=IsolatedStorageSettings.ApplicationSettings;
    //添加配置信息
    settings.Add("ip","192.168.1.1");
    //保存
    settings.Save();

    }
    复制代码

  7. 读取操作
    View Code
    复制代码
    ///<summary>
    ///读操作
    ///</summary>
    ///<paramname="sender"></param>
    ///<paramname="e"></param>
    privatevoidbtnRead_Click(objectsender,RoutedEventArgse)
    {
    IsolatedStorageFileisStore=IsolatedStorageFile.GetUserStoreForApplication();

    if(isStore.FileExists("test\\TEST.txt"))
    {
    IsolatedStorageFileStreamisStream=newIsolatedStorageFileStream("test\\TEST.txt",System.IO.FileMode.Open,FileAccess.Read,isStore);
    //获取路径
    string[]directoryName=isStore.GetDirectoryNames("test");
    //获取文件名搜索模式。单字符("?")和多字符("*")通配符都受支持
    string[]fileName=isStore.GetFileNames("test\\T*.txt");
    txtShow.Text="写入资料值为:"+isStream.ReadByte().ToString()+";\n路径为:"+directoryName[0].ToString()+";\n文件名称为:"+fileName[0];

    isStream.Close();
    isStore.Dispose();
    txtShow.Text=txtShow.Text+"\n读取完成";
    //存储配置信息
    varsettings=IsolatedStorageSettings.ApplicationSettings;

    //判断key是否存在
    if(settings.Contains("ip"))
    {
    //只支持key的查询
    stringip=settings["ip"].ToString();
    //out传参获取值
    stringipStr;
    settings.TryGetValue("ip",outipStr);
    txtShow.Text=txtShow.Text+"\n配置文件ip:"+ip+";\nout传参ip:"+ipStr;

    }


    }
    }
    复制代码

  8. 读取效果
分享到:
评论

相关推荐

    WindowsPhone 9. 使用本地数据库

    本地数据库作为一个文件存储在应用程序的独立存储空间。本次实验使用 Tidy 应用程序来演示在 Windows® Phone应用程序中使用本地数据库。应用程序管理与项目相关的任务。每个任务支持附件以及预定义的数据集,包括...

    在Windows Phone Mango中使用本地数据库

    Windows® Phone Mango提供了一种新的方式来存储...本地数据库作为一个文件存储在应用程序的独立存储空间。本文档使用 Tidy 应用程序来演示在 Windows® Phone应用程序中使用本地数据库。应用程序管理与项目相关的任务

    wp独立存储空间案例

    wp独立存储空间案例源码,在Android 里面我们要快速保存用户的设置或者游戏进行的数据,我们通常全使用SharePreference 这个类来进行操作,另外Android 还提供了一系列继承自SharePreference 的组件提供我们快速保存...

    WP8 下载网络音频到独立存储空间中播放示例

    代码详解: http://blog.csdn.net/zmq570235977/article/details/20702729

    WindowsPhonePowerTools

    可以查看WP8模拟器或真机的独立存储。这个工具可以不用修改应用代码,直接连接模拟器/真机,读取独立存储空间中的数据。

    计算机应用基础第三章《计算机的组成》.pptx

    虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,...

    新版Android开发教程.rar

    � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、制造商、独立软件生产商都可以获得不错的利 益 。 将移动终端的评价标准从硬件向软件转变,极大的激发了软件开发者的热情。 � Android 的源代码遵循 Apache...

    NetSupport School 课堂管理软件(简体中文版)

    高级独立的重放转换工具。 新的学生连接模式 引入新的连接模式,即“用户模式”,使教师能够根据登录的用户名定义要连接的学生列表。为了方便访问该模式和其他连接模式,在最初加载教师端程序和重新开始一个班级时...

    chrome.exe

    另有手机版的Chrome浏览器,于2012年发布了Chrome浏览器移动版,提供IOS系统、安卓系统以及Windows Phone系统的Chrome浏览器,在保持浏览器原有特点的情况下,实现了多终端使用浏览器,具有共享收藏历史信息等功能,...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

Global site tag (gtag.js) - Google Analytics