与上面介绍的三种不同应用程序数据存储类型对应,应用程序有三种数据存储空间,分别为本地应用程序数据存储空间、漫游应用程序数据存储空间和临时应用程序数据存储空间。通过使用ApplicationData类的LocalFolder属性即可获取本地应用程序数据存储空间的根文件夹,而漫游和临时应用程序数据存储空间的根文件夹则可分别通过该类的RoamingFolder和TemporaryFolder属性来获取,在获得数据存储空间的根文件夹之后,可以对相应存储空间进行操作。

下面以本地应用程序数据存储空间为例(以下简称本地应用存储空间),演示如何在本地应用存储空间中创建、删除文件和文件夹以及如何写入和读取文件内容。

在Visual Studio 2012中新建一个Windows应用商店的空白应用程序项目,并命名为LocalStorageApp。双击打开项目的MainPage.xaml文件,在Grid元素中添加以下代码,用于布局前台界面。

<StackPanel Orientation="Horizontal">

    <StackPanel>

        <TextBlock x:Name="CreateFolderTextBlock" TextWrapping="Wrap"  Width="600" FontSize="30" Height="73" Margin="80,40,0,0"/>

        <TextBlock x:Name="DeleteFolderTextBlock" TextWrapping="Wrap"   Width="600" FontSize="30" Height="73" Margin="80,0,0,0"/>

        <TextBlock x:Name="CreateFileTextBlock" TextWrapping="Wrap"  Width="600" FontSize="30" Height="73" Margin="80,10,0,0"/>

        <TextBlock x:Name="DeleteFileTextBlock" TextWrapping="Wrap"   Width="600" FontSize="30" Height="73" Margin="80,20,0,0"/>

        <TextBlock x:Name="WriteFileTextBlock" TextWrapping="Wrap"  Width="600" FontSize="30" Height="73" Margin="80,20,0,0"/>

        <TextBlock x:Name="ReadFileTextBlock" TextWrapping="Wrap"   Width="600" FontSize=" 30" Height=" 120" Margin="80,10,0,0"/>

    </StackPanel>

<StackPanel Width=" 300" Margin="30,0">

        <Button Content="创建文件夹" Click="CreateFolder_Click" FontSize="30" Margin="0,30,0,0"/>

        <Button Content="删除文件夹" Click="DeleteFolder_Click" FontSize="30" Margin="0,30,0,0"/>

        <Button Content="创建文件" Click="CreateFile_Click" FontSize="30" Margin="0,30,0,0" Width="192"/>

        <Button Content="删除文件" Click="DeleteFile_Click" FontSize="30" Margin="0,30,0,0"/>

        <Button Content="写入文件" Click="WriteFile_Click" FontSize="30" Margin="0,30,0,0" Width="192"/>

        <Button Content="读取文件" Click="ReadFile_Click" FontSize="30" Margin="0,30,0,0" Width="192"/>

    </StackPanel>

</StackPanel>

上面的代码为应用添加了六个按钮和文本块,六个按钮分别为“创建文件夹”、“删除文件夹”、“创建文件”、“删除文件”、“写入文件”和“读取文件”,这些按钮都用来对本地应用存储空间进行操作,其中“创建文件夹”按钮用来在本地应用存储空间中新建文件夹,“删除文件夹”按钮用来对新建文件夹进行删除;“创建文件”按钮用来在本地应用存储空间中新建文件,与之对应,“删除文件”按钮用来删除文件;“写入文件”按钮用来对本地应用存储空间中的文件进行写入操作,“读取文件”按钮则用来将文件中的内容读取出来,六个文本块全部用于显示相应的提示信息。

布局好前台界面后,接下来陆续为这六个按钮添加单击事件处理方法,实现按钮各自的功能,由于各个按钮的处理方法都需要获得本地应用存储空间的根文件夹,为了简化代码同时方便各个方法的使用,这里在MainPage.xaml.cs文件中的MainPage类中定义了三个成员变量localFolder、folder和file,代码如下所示:

StorageFolder localFolder = ApplicationData.Current.LocalFolder;

StorageFolder folder = null;

StorageFile file = null;

其中localFolder用于保存本地应用存储空间的根文件夹,folder用于保存新建的文件夹,而file用来保存新建的文件。

定义了类成员变量后,下面首先来看“创建文件夹”按钮的功能实现,实现此按钮功能的单击事件处理方法如下所示:

async private void CreateFolder_Click(object sender, RoutedEventArgs e)

{

//新建文件夹

    folder = await localFolder.CreateFolderAsync("myFolder", CreationCollisionOption.ReplaceExisting);

//显示提示信息

    CreateFolderTextBlock.Text = "文件夹 " + folder.Name + " 创建成功!";

}

代码通过使用localFolder的异步方法CreateFolderAsync创建名为myFolder的文件夹,并在CreateFolderTextBlock文本块中显示提示信息。

与之对应的“删除文件夹”按钮实现将新建的文件夹删除,其单击事件处理方法如下所示:

async private void DeleteFolder_Click(object sender, RoutedEventArgs e)

{

    if (folder != null)

    {

        await folder.DeleteAsync();

        DeleteFolderTextBlock.Text = "文件夹 " + folder.Name + " 删除成功!";

    }

    else DeleteFolderTextBlock.Text = "没有找到指定文件夹!";

}

方法首先判断folder是否为空,如果不为空则调用异步方法DeleteAsync删除folder,并在DeleteFolderTextBlock中显示删除成功的提示信息,否则显示“没有找到指定文件夹!”。

“创建文件”按钮的单击事件处理方法与“创建文件夹”的很相似,只不过将调用的方法换成了CreateFileAsync,显示的提示信息略有不同而已,其代码如下所示:

async private void CreateFile_Click(object sender, RoutedEventArgs e)

{

//新建文件

    file = await localFolder.CreateFileAsync("myFile", CreationCollisionOption.ReplaceExisting);

    CreateFileTextBlock.Text = "文件 " + file.Name + " 创建成功!";

}

“删除文件”按钮的单击事件处理方法与“删除文件夹”的也很相似,同样是首先判断file是否为空,如果file不为空,调用异步方法DeleteAsync,只不过这次方法调用的对象换成了file,代码如下所示:

async private void DeleteFile_Click(object sender, RoutedEventArgs e)

{

    if (file != null)

    {

        await file.DeleteAsync();

        DeleteFileTextBlock.Text = "文件 " + file.Name + " 删除成功!";

    }

    else DeleteFileTextBlock.Text = "没有找到指定文件!";

}

下面继续来实现“写入文件”和“读取文件”按钮的功能,首先给出“写入文件”按钮的单击事件处理方法,代码如下所示:

async private void WriteFile_Click(object sender, RoutedEventArgs e)

{

//新建文件

    file = await localFolder.CreateFileAsync("myFile", CreationCollisionOption.OpenIfExists);

//写入文件

    await FileIO.WriteTextAsync(file, "hello,I am a File!");

    WriteFileTextBlock.Text = "向" + file.Name + "文件中写入 hello,I am a File!";

}

代码使用CreateFileAsync方法异步创建名为myFile的文件,并通过FileIO类的WriteTextAsync方法将文本写入到文件中,最后在WriteFileTextBlock文本块中显示提示信息。与之相对应的“读取文件”按钮实现将myFile文件中的内容读取出来,实现此功能的单击事件处理方法ReadFile_Click的代码如下所示。

async private voidReadFile_Click(object sender, RoutedEventArgs e)

{

    if (file != null)

    {

        String text = await FileIO.ReadTextAsync(file);

        ReadFileTextBlock.Text = "文件 " + file.Name + "读取成功!" + Environment.NewLine + Environment.NewLine + "读取的内容为:" + text.ToString();

    }

    else ReadFileTextBlock.Text = "没有找到指定文件!";

}

方法首先检查file是否为空,如果不为空说明myFile文件存在,那么使用FileIO类的ReadTextAsync方法异步读取myFile文件,并将读取到的内容连同提示信息一起显示在ReadFileTextBlock文本块中,否则显示“没有找到指定文件!”。

运行应用程序,从上到下依次单击界面中的六个按钮,显示效果如图13-1所示。

图13-1 应用存储中文件与文件夹操作

至此我们已经通过一个具体的应用示例,详细介绍了与本地应用存储空间有关的操作。

Windows Store App 应用程序存储空间的更多相关文章

  1. Windows Store App 应用程序安装目录

    前面介绍了如何对本地应用存储空间中的文件以及文件夹进行操作,在应用中除了可以对本地应用存储空间进行操作之外,还可以对应用程序安装目录进行相关操作.本节将通过一个示例,详细讲解如何对应用程序安装目录中的 ...

  2. 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)

    这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...

  3. Windows Store App 过渡动画

    Windows Store App 过渡动画     在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...

  4. Windows store app[Part 4]:深入WinRT的异步机制

    接上篇Windows store app[Part 3]:认识WinRT的异步机制 WinRT异步机制回顾: IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如 ...

  5. Windows store app[Part 3]:认识WinRT的异步机制

    WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...

  6. Windows store app[Part 1]:读取U盘数据

    Windows 8系统下开发App程序,对于.NET程序员来说,需要重新熟悉下类库. 关于WinRT,引用一张网上传的很多的结构图: 图1 针对App的开发,App工作在系统划定的安全沙箱内,所以通过 ...

  7. 05、Windows Store app 的图片裁切(更新)

    在 Win Phone Silverlight api 中,有一个 PhotoChooserTask 选择器,指定宽.高属性,在选择图片的时候, 可以进行裁切,代码: PhotoChooserTask ...

  8. 01、Windows Store APP 设置页面横竖屏的方法

    在 windows phone store app 中,判断和设置页面横竖屏的方法,与 silverlight 中的 Page 类 不同,不能直接通过 Page.Orientation 进行设置.而是 ...

  9. Windows Store App JavaScript 开发:简单对象绑定

    简单对象绑定是一种基本的绑定类型,可以实现将一个对象中的数据绑定到HTML元素的属性.下面通过一个示例来演示如何使用HTML5和JavaScript开发一个实现简单对象绑定的Windows应用商店应用 ...

随机推荐

  1. STORM_0004_windows下zookeeper的伪集群的搭建

    -----------------------------------------------------START------------------------------------------ ...

  2. 在SQL Server中 获取日期、日期格式转换

    --常用日期转换参数: PRINT CONVERT(varchar, getdate(), 120 ) 2016-07-20 16:09:01 PRINT replace(replace(replac ...

  3. SAP MM Consignment 寄售库存

    转自:http://blog.csdn.net/futurewind/article/details/3985200 寄售,定义就是供应商的货物放在自己的库存中,使用的时候可以转到自己的库存,不用了就 ...

  4. ubuntu_常用命令_01

    1. 获取超级用户权限(需要输入超级用户的密码) sudo -i 2. 文本编辑器(暂时觉得 类似Windows里面的txt,更多功能有待发现) gedit /xxx/yyy ZC: 貌似 这个命令 ...

  5. 树的计数 + prufer序列与Cayley公式 学习笔记

    首先是 Martrix67 的博文:http://www.matrix67.com/blog/archives/682 然后是morejarphone同学的博文:http://blog.csdn.ne ...

  6. 【转载】【Centos linux系统】命令行(静默)安装oracle 11gR2

    [原文]:http://blog.chinaunix.net/uid-23886490-id-3565998.html 一.安装前准备 1.内存及swap要求 至于swap如何添加,后文将提到 gre ...

  7. 【服务器防护】VPN的ip变更,导致无法连接服务器,解决方法【阿里云ECS】

    在阿里云的管理控制台,云服务器ECS - 对应服务器 - 选“管理” - “连接管理终端” 通过这个入口,可以进入Linux云服务器,修改防火墙限制的IP即可

  8. 转:strcpy实现的考察要点

    strcpy函数的实现 已知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如考虑 ...

  9. Bootstrap段落(正文文本)

    一.Bootstrap段落特点 段落是排版中另一个重要元素之一.在Bootstrap中为文本设置了一个全局的文本样式(这里所说的文本是指正文文本): 1.全局文本字号为14px(font-size). ...

  10. ORACLE CentOS5.6安装

    1 准备 CentOS 5.6企业版 oracle11g fs 安装.安装环境为vmware虚拟机.另外,本安装文档非常简洁,但关键步骤都指出来了,其他的都是默认选择,遇到不知该如何选择的操作或者问题 ...