• Windows Phone笔记(10)使用独立存储(中)(转)


    Windows Phone笔记(10)使用独立存储(中)

     

      在我们前面的笔记中了解如何通过使用IsolatedStorageSettings类来保存应用程序设置,也知道独立存储还可以通过使用使用 IsolatedStorageFile类存储文件和文件夹。在这篇笔记中,让我们一起来了解并学会使用IsolatedStorageFile类来存储文件和文件夹。

    1.使用 IsolatedStorageFile类存储文件和文件夹

      由于涉及到了I/O操作,我们首先需要在项目中引用到System.IO和IsolatedStorageFile类所在的System.IO.IsolatedStorage这两个命名空间。下面我们通过一个示例来了解如何使用IsolatedStorageFile类来存储文件和文件夹。

      在示例中我们在文本框中输入文件,点击保存,然后再把保存的文本读取并显示出来。首先给出我们的前台MainPage.xaml的代码:

    复制代码
     1       <!--ContentPanel - 在此处放置其他内容-->
    2 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    3 <StackPanel>
    4 <Grid Margin="0 15" Height="300">
    5 <TextBox Width="450" Height="72" VerticalAlignment="Top" Name="txtWrite"/>
    6 <Button Width="200" Height="72" Content="保存数据" VerticalAlignment="Center" Name="btnSave" Click="btnSave_Click"/>
    7 </Grid>
    8 <Grid Height="350" Margin="0 15">
    9 <TextBlock Width="200" Height="72" VerticalAlignment="Top" HorizontalAlignment="Center" FontSize="32" Name="txtRead"/>
    10 <Button Width="200" Height="72" Content="读取数据" VerticalAlignment="Center" Name="btnRead" Click="btnRead_Click"/>
    11 </Grid>
    12 </StackPanel>
    13 </Grid>
    复制代码

     

    然后是MainPage.xaml.cs后台处理程序:

    复制代码
     1       /// <summary>
    2      /// 将文本框中的文本写入到文件中
    3      /// </summary>
    4      /// <param name="sender"></param>
    5      /// <param name="e"></param>
    6 private void btnSave_Click(object sender, RoutedEventArgs e)
    7 {
    8 // 获取应用程序的虚拟存储
    9 IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
    10
    11 // 在独立存储中创建一个新的文件夹
    12 myStore.CreateDirectory("TestFolder");
    13
    14 // 指定文件路径和选项
    15 using (var isoFileStream = new IsolatedStorageFileStream(@"TestFolder\myTestFile.txt", FileMode.OpenOrCreate, myStore))
    16 {
    17 //写入数据
    18 using (var isoFileWriter = new StreamWriter(isoFileStream))
    19 {
    20 isoFileWriter.WriteLine(txtWrite.Text);
    21 }
    22 }
    23 }
    24
    25 /// <summary>
    26     /// 读取写入的文件
    27      /// </summary>
    28      /// <param name="sender"></param>
    29      /// <param name="e"></param>
    30 private void btnRead_Click(object sender, RoutedEventArgs e)
    31 {
    32 // 获取应用程序的虚拟存储
    33 IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
    34 try
    35 {
    36 // 读取指定目录的指定文件
    37 using (var isoFileStream = new IsolatedStorageFileStream(@"TestFolder\myTestFile.txt", FileMode.Open, myStore))
    38 {
    39 // 读取数据
    40 using (var isoFileReader = new StreamReader(isoFileStream))
    41 {
    42 txtRead.Text = isoFileReader.ReadLine();
    43 }
    44 }
    45 }
    46 catch
    47 {
    48 //异常处理
    49 txtRead.Text = "请预先创建文件和文件夹";
    50 }
    51 }
    复制代码

    编译运行程序:

      

    可以看到我们已经成功创建一个文件夹和txt文件,并且在txt文件中写入了数据。但是我们真的在手机存储开中创建了一个这样的文件吗?微软在Windows Phone中的存储控制是很严格的,我们并不能够直接查看我们在独立存储中创建的文件,不过我们可以通过一个使用Windows Phone SDK自带的:独立存储资源管理器可列出、复制和替换独立存储中的文件和目录,下面我们就将我们的创建的文件复制到我们的电脑中。

    2.使用独立存储资源管理器(ISETool.exe)将独立存储中创建的文件复制到电脑中

      根据操作系统的不同,独立存储资源管理器的安装位置在:

    • Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools\IsolatedStorageExplorerTool

    • Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\IsolatedStorageExplorerTool

    首先我们打开模拟器,确保我们的前面的应用程序已经部署在模拟器中,并且已经在独立存储中创建了文件,之后,打开命令行,进入到独立存储资源管理器的安装目录中,例如在我的电脑中是:

    接着获取应用程序的 Product GUID,因为在下面的命令中我们需要使用到它,在Properties文件夹下的WPAppManifest.xml 文件的 App 元素的 ProductID 属性的值,选中复制。然后在命名行中接着输入:

                  ISETool.exe ts xd 应用程序的ProductId属性值 "电脑上的路径"

    这我这里是这样:

    然后回车,命令成功后如下所示:

    打开我们复制到的目录我们可以看到已经成功的把创建的文件从Windows Phone中复制到本地:

    猛击下载:示例源码

    参考资料:

      http://msdn.microsoft.com/zh-cn/library/ff626519(v=vs.92).aspx(重要)

      http://msdn.microsoft.com/zh-cn/library/hh286408(v=vs.92).aspx

      http://msdn.microsoft.com/zh-cn/library/ff769544(v=vs.92).aspx(重要)

    作者:晴天猪

    出处:http://www.cnblogs.com/IPrograming 

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    [工具分享]JetBrains ReSharper 9.0 正式版和注册码
    JAVA数据库连接池的革命 -- 从BoneCP到HikariCP
    【C#教程10】C# 判断
    【C#教程09】C# 运算符
    【C#教程07】C# 变量
    【C#教程06】C# 类型转换
    【C# 教程05】C# 数据类型
    【C# 教程04】C# 基本语法
    【C# 教程03】C# 程序结构
    【C#教程02】C# 环境
  • 原文地址:https://www.cnblogs.com/zhanghaifeng/p/2480924.html
Copyright © 2020-2023  润新知