您的位置:首页 > 其它

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

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

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

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

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

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


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

    /// <summary>
     /// 将文本框中的文本写入到文件中
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
private void btnSave_Click(object sender, RoutedEventArgs e)
{
// 获取应用程序的虚拟存储
IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();

// 在独立存储中创建一个新的文件夹
myStore.CreateDirectory("TestFolder");

// 指定文件路径和选项
using (var isoFileStream = new IsolatedStorageFileStream(@"TestFolder\myTestFile.txt", FileMode.OpenOrCreate, myStore))
{
//写入数据
using (var isoFileWriter = new StreamWriter(isoFileStream))
{
isoFileWriter.WriteLine(txtWrite.Text);
}
}
}

/// <summary>
26      /// 读取写入的文件
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
private void btnRead_Click(object sender, RoutedEventArgs e)
{
// 获取应用程序的虚拟存储
IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
try
{
//  读取指定目录的指定文件
using (var isoFileStream = new IsolatedStorageFileStream(@"TestFolder\myTestFile.txt", FileMode.Open, myStore))
{
// 读取数据
using (var isoFileReader = new StreamReader(isoFileStream))
{
txtRead.Text = isoFileReader.ReadLine();
}
}
}
catch
{
//异常处理
txtRead.Text = "请预先创建文件和文件夹";
}
}


编译运行程序:


  


可以看到我们已经成功创建一个文件夹和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

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


  Windows Phone开发者交流群:79339880,欢迎大家来一起讨论交流,共同学习进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: