Windows Store App 应用程序安装目录
前面介绍了如何对本地应用存储空间中的文件以及文件夹进行操作,在应用中除了可以对本地应用存储空间进行操作之外,还可以对应用程序安装目录进行相关操作。本节将通过一个示例,详细讲解如何对应用程序安装目录中的文件进行操作,此示例可以实现获取应用程序安装目录下的图片文件并将其显示,还可以实现复制安装目录下的文件。
在Visual Studio 2012中新建一个Windows应用商店的空白应用程序项目,并命名为InstalledLocationApp。双击打开项目的MainPage.xaml文件,在Grid元素中添加如下代码,布局前台界面。
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" >
<StackPanel Orientation="Horizontal" >
<!--添加开始复制按钮-->
<Button x:Name="CopyFileButton" Click="CopyFile_Click" Content="开始复制" Width="194" Height="63" FontSize="30" Margin="50,50"/>
<TextBlock x:Name="tbMessage" FontSize="35" Width="500" Height=" 50" VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="50,50">
<!--添加显示图片按钮-->
<Button x:Name="ViewPictureButton" Click="ViewPictureButton_Click" Content="显示图片" FontSize="30" Width="194" Height="63"></Button>
<ListView x:Name="ShowPicture" Width="300" Height=" 200">
<ListView.ItemTemplate>
<DataTemplate >
<Image Source="{Binding Uri}"></Image>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</StackPanel>
上面的代码为应用添加了两个按钮、一个文本块和一个ListView控件,并在ListView控件中添加了一个Image控件,两个按钮分别为“开始复制”和“显示图片”,其中“开始复制”按钮用来对安装目录中的XML文件进行复制,“显示图片”按钮用于获取安装目录中的图片文件,并将获得的图片在ListView的Image控件中显示。这里通过数据绑定为ListView创建了数据模板,将图片的地址绑定到Image控件,关于数据绑定的介绍请查看相关章节。
布局了前台界面后,下面介绍后台功能的实现,为了方便对图片进行管理,我们首先在MainPage.xaml.cs文件中创建表示图片的Picture类,并在其中定义代表图片路径的Uri属性。代码如下所示:
public class Picture
{
public String Uri { get; set; }
}
接下来将陆续实现“开始复制”和“显示图片”按钮的功能,分别为按钮添加实现其功能的单击事件处理方法,首先来看“显示图片”按钮,实现其功能的单击事件处理方法ViewPictureButton_Click如下所示。
async private void ViewPictureButton_Click(object sender, RoutedEventArgs e)
{
List<Picture> pictureList = new List<Picture>();
//获得picture文件夹
StorageFolder folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("picture");
IReadOnlyCollection<StorageFile> files = await folder.GetFilesAsync();
//获得图片
foreach (StorageFile file in files)
{
pictureList.Add(new Picture { Uri = "picture/" + file.Name });
}
ShowPicture.ItemsSource = pictureList;
}
方法首先创建了一个List集合pictureList,然后使用GetFolderAsync获得安装目录中的picture文件夹,通过GetFilesAsync方法异步获取文件夹中的图片,并将获得的图片保存在只读集合files中,使用foreach循环遍历files,调用Add方法将其中保存的图片添加到集合pictureList里面,最后将pictureList绑定到ListView中。
现在已经实现了“显示图片”按钮的功能,不过在运行程序之前还需要做一些必要的准备工作,由于这里显示的是应用程序安装目录中picture文件夹下的图片文件,而创建项目时默认是没有picture文件夹的,因此需要在项目的解决方案资源管理器中新建一个picture文件夹,并在文件中放入一些图片文件。
完成上面的准备工作之后,按F5键运行程序,单击“显示图片”按钮,界面的显示效果如图13-2所示。
图13-2 显示图片
接下来继续来实现“开始复制”按钮的功能,实现按钮功能的单击事件处理方法如下所示。
async private void CopyFile_Click(object sender, RoutedEventArgs e)
{
//获取应用程序安装目录下名为Model的文件夹
StorageFolder copyFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Model");
//获取Model文件夹下名为“word.xml”的文件
StorageFile copyFile = await copyFolder.GetFileAsync("word.xml");
//读取文件内容
IBuffer buffer = await FileIO.ReadBufferAsync(copyFile);
//在本地应用存储空间中新建一个名为“word.xml”的文件
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync("word.xml", CreationCollisionOption.OpenIfExists);
//将读取的内容写入到该文件中
await FileIO.WriteBufferAsync(file, buffer);
tbMessage.Text = "复制文件成功!";
}
代码使用异步方法GetFolderAsync获得安装目录下名为Model的文件夹,通过GetFileAsync方法获取其中的word.xml文件,并使用StorageFile类型的copyFile将其保存,以copyFile为参数调用FileIO类的ReadBufferAsync方法异步读取word.xml文件中的内容,接着通过CreateFileAsync方法在本地应用存储空间中新建一个名为word.xml的文件,最后使用FileIO类的WriteBufferAsync方法将读取到的内容写入到新建的word.xml文件中。
这样就实现了“开始复制”按钮的功能,与上面的情况一样,在运行程序之前需要在项目的解决方案资源管理器中新建一个Model文件夹,并在文件中放入一个word.xml文件。
完成准备工作之后,按F5键运行程序,单击“开始复制”按钮,界面的显示效果如图13-3所示。
图13-3 复制成功提示信息
这时定位到本地应用存储空间,会发现word.xml文件已经复制到其中。
Windows Store App 应用程序安装目录的更多相关文章
- Windows Store App 应用程序存储空间
与上面介绍的三种不同应用程序数据存储类型对应,应用程序有三种数据存储空间,分别为本地应用程序数据存储空间.漫游应用程序数据存储空间和临时应用程序数据存储空间.通过使用ApplicationData类的 ...
- 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...
- mac 应用程序安装目录
java 安装目录 :/Library/Java/JavaVirtualMachines/jdk1.8.0_<more numbers>.jdk/Contents/Home maven 安 ...
- Windows Store App 过渡动画
Windows Store App 过渡动画 在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...
- Windows store app[Part 4]:深入WinRT的异步机制
接上篇Windows store app[Part 3]:认识WinRT的异步机制 WinRT异步机制回顾: IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如 ...
- Windows store app[Part 3]:认识WinRT的异步机制
WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...
- Windows Store App 访问应用内部文件
访问应用程序内部的文件可以使用多种不同的方法,13.1节中已经介绍过相关的方法,除此之外,还可以使用文件的URI地址直接对文件进行检索,这种访问方式需要用到StorageFile类的静态方法GetFi ...
- Windows Store无法联网时安装WSL
Windows Store无法联网时安装WSL 1 打开powershell 输入命令: Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 - ...
- Windows store app[Part 1]:读取U盘数据
Windows 8系统下开发App程序,对于.NET程序员来说,需要重新熟悉下类库. 关于WinRT,引用一张网上传的很多的结构图: 图1 针对App的开发,App工作在系统划定的安全沙箱内,所以通过 ...
随机推荐
- hdu 2112 (最短路+map)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others) ...
- HDU 5813 Elegant Construction(优雅建造)
HDU 5813 Elegant Construction(优雅建造) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65 ...
- 5.mybatis一对一表关联查询
方式一:嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集,封装联表查询的数据(去除重复的数据) SELECT * FROM class c,teacher t WHERE c.tid = t.t ...
- Linux命令工具 top详解
Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不 ...
- python_way day16 DOM
Python_way day16 1.Dom (找到html中的标签) 一.DOM 1.查找元素 直接查找 document.getElementById 根据ID获取一个标签 --->这里是 ...
- Python基础学习笔记(十)日期Calendar和时间Timer
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...
- [原]五分钟搭建gitserver
本来在忙一些事情,结果刚才突然收到一个临时的事情,号称很着急. 问了一下,原来是需要在本地搭建一个git库,但其实之前我是有做过gitserver的,不过是在阿里云(部分分布在青云)上,而且目前在使用 ...
- Windows Live Writer编写Octopress
Windows live Writer是一个可以用来离线编写,并发布博客的工具. Octopress是一个静态博客生成系统.使用群体多是geek,主要有显示代码清晰,git同步,并且不用购买空间的特点 ...
- [转载] MySQL高可用方案选型参考
原文: http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml?hmsr=toutiao.io&utm_medium=toutiao. ...
- poj2826An Easy Problem?!
链接 繁琐细节题. 1.线段无交点时,ans=0; 2.如图 假设过p3.y的水平线与p1p2相交 因为雨是垂直下落的,左图的情况是无法收集到雨水的,而这种情况有一种简便的判定方式 cross(p1- ...