



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文由麦可网/course 收集整理,转载请注明出处。Windows Phone 8 手机存储卡数据手机存储卡为SD卡(全名为Secure Digital Memory Card),用户扩展手机的信息存储,可以很方便地进行更换和安装。在Windows Phone 8里面第三方程序只有对存储卡的读取权限,包括读取存储卡的文件目录和文件的信息。读取存储卡信息的相API都在Microsoft.Phone.Storage空间下,读取存储卡的信息需要在项目的WMAppManifest.xml文件中添加ID_CAP_REMOVABLE_STORAGE的能力,表示程序需要读取存储卡的信息,否则调用读取存储卡的API将会引发异常。16.1.1获取存储卡文件夹要读取存储卡文件夹首先需要去识别存储卡设备,识别存储卡设备可以通过ExternalStorage.GetExternalStorageDevicesAsync()方法异步去获取一个存储卡设备的列表,存储卡设备对象用ExternalStorageDevice类表示。ExternalStorageDevice类包含两个属性,一个是ExternalStorageID表示扩展存储的唯一ID字符串,另外一个是RootFolder表示存储卡的根目录,是默认的最顶层的文件夹。ExternalStorageDevice类还包含两个异步方法,一个是GetFileAsync方法通过文件的路径来获取文件的信息,一个是GetFolderAsync方法通过文件夹的路径来获取文件夹的信息。ExternalStorageFolder类表示一个存储卡的文件夹类,里面包含了文件夹的一些详细的信息,以及文件夹的相关方法,ExternalStorageFolder类的成员如表16.1所示。表16.1 ExternalStorageFolder类的成员名称说明DateModified文件修改的时间Name文件夹的名字Path文件夹的路径GetFilesAsync()获取该文件夹的所有文件GetFolderAsync(string name)获取该文件夹目录下该名字文件夹的信息GetFoldersAsync()获取该文件夹下面所有的文件夹下面开看一下获取存储卡文件目录的代码示例:async void GetFolder() / 获取扩展的存储卡列表 IEnumerable deviceList = await ExternalStorage.GetExternalStorageDevicesAsync(); / 遍历存储卡列表 foreach (ExternalStorageDevice device in deviceList) / 遍历存储卡根目录 foreach (ExternalStorageFolder folder in await device.RootFolder.GetFoldersAsync() / 遍历存储卡里面的文件夹 foreach (ExternalStorageFolder folder2 in await folder.GetFoldersAsync() / 获取文件夹的信息 如名字folder2.Name等 16.1.2获取存储卡文件ExternalStorageFile类表示一个存储卡的文件类,里面包含了文件的一些详细的信息,以及打开文件的方法,ExternalStorageFile类的成员如表16.2所示。要读取存储卡的文件,必须要先读取出文件夹之后,然后再通过ExternalStorageFolder类的GetFilesAsync()的方法来获取该文件夹下的所有文件,如果知道文件的存储路径也可以使用ExternalStorageDevice存储卡设别类的GetFileAsync(string filePath)方法来获取具体路径的文件。表16.2 ExternalStorageFile类的成员名称说明DateModified文件修改的时间Name文件夹的名字Path文件夹的路径Task OpenForReadAsync()打开文件夹的方法下面开看一下获取存储卡根目录文件的代码示例:async void GetFile() / 获取扩展的存储卡列表 IEnumerable deviceList = await ExternalStorage.GetExternalStorageDevicesAsync(); / 遍历存储卡列表 foreach (ExternalStorageDevice device in deviceList) / 遍历存储卡根目录的文件 foreach (ExternalStorageFile file in await device.RootFolder.GetFilesAsync() / 处理文件的信息 16.1.3实例:读取存储卡信息下面给出读取存储卡信息的示例:在手机应用程序里面读取手机的存储卡的信息,按照文件夹目录一层层来展示存储卡的文件。代码清单16-1:读取存储卡信息(源代码:第16章/Examples_16_1)MainPage.xaml文件主要代码 MainPage.xaml.cs文件代码using System.Collections.Generic;using System.Windows;using System.Windows.Controls;using Microsoft.Phone.Controls;using Microsoft.Phone.Storage;namespace SDCardDemo public partial class MainPage : PhoneApplicationPage IEnumerable deviceList;/ 存储卡设备列表 public MainPage() InitializeComponent(); / 打开存储卡的根目录 private async void btGetFile_Click(object sender, System.Windows.RoutedEventArgs e) / 获取存储卡设备列表 deviceList = await ExternalStorage.GetExternalStorageDevicesAsync(); lbFolder.Items.Clear(); foreach (ExternalStorageDevice device in deviceList) / 把获取到的设备根目录信息添加到ListBox控件里面 ListBoxItem item = new ListBoxItem(); item.Content = 根目录+device.ExternalStorageID; item.DataContext = device.RootFolder; lbFolder.Items.Add(item); / 打开文件夹获取文件夹里面的文件夹和文件 private async void Button_Click_1(object sender, System.Windows.RoutedEventArgs e) if (lbFolder.SelectedIndex = -1) MessageBox.Show(请选择一个文件夹); else / 获取选中的文件夹 ListBoxItem item = lbFolder.SelectedItem as ListBoxItem; ExternalStorageFolder externalStorageDevice = item.DataContext as ExternalStorageFolder; / 获取文件夹中的文件夹 IEnumerable folderList= await externalStorageDevice.GetFoldersAsync(); lbFolder.Items.Clear(); foreach (ExternalStorageFolder folder in folderList) / 把获取到的文件夹信息添加到ListBox控件里面 ListBoxItem item2 = new ListBoxItem(); item2.Content = 文件夹: + folder.Name; item2.DataContext = folder; lbFolder.Items.Add(item2); / 获取文件夹中的文件 IEnumerable fileList = await externalStorageDevice.GetFilesAsync(); lbFile.Items.Clear(); foreach
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论