• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

WindowsPhone8开发获取手机存储卡数据代码示例

时间:2015年04月02日 15:24:05    来源:魔法猪系统重装大师官网    人气:16500

手机存储卡为SD卡(全名为Secure Digital Memory Card),用户扩展手机的信息存储,可以很方便地进行更换和安装。在Windows Phone 8里面第三方程序只有对存储卡的读取权限,包括读取存储卡的文件目录和文件的信息。读取存储卡信息的相API都在Microsoft.Phone.Storage空间下,读取存储卡的信息需要在项目的WMAppManifest.xml文件中添加ID_CAP_REMOVABLE_STORAGE的能力,表示程序需要读取存储卡的信息,否则调用读取存储卡的API将会引发异常。

1获取存储卡文件夹

要读取存储卡文件夹首先需要去识别存储卡设备,识别存储卡设备可以通过ExternalStorage.GetExternalStorageDevicesAsync()方法异步去获取一个存储卡设备的列表,存储卡设备对象用ExternalStorageDevice类表示。ExternalStorageDevice类包含两个属性,一个是ExternalStorageID表示扩展存储的唯一ID字符串,另外一个是RootFolder表示存储卡的根目录,是默认的最顶层的文件夹。ExternalStorageDevice类还包含两个异步方法,一个是GetFileAsync方法通过文件的路径来获取文件的信息,一个是GetFolderAsync方法通过文件夹的路径来获取文件夹的信息。

ExternalStorageFolder类表示一个存储卡的文件夹类,里面包含了文件夹的一些详细的信息,以及文件夹的相关方法,ExternalStorageFolder类的成员如表示。

表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等
                }
            }
        }
    }

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())
            {
                // 处理文件的信息
            }
        }
    }

3实例:读取存储卡信息

下面给出读取存储卡信息的示例:在手机应用程序里面读取手机的存储卡的信息,按照文件夹目录一层层来展示存储卡的文件。
代码清单读取存储卡信息(源代码:第16章\Examples_

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 (ExternalStorageFile file in fileList)
                {
                    // 把获取到的文件信息添加到ListBox控件里面
                    ListBoxItem item3 = new ListBoxItem();
                    item3.Content = "文件:" + file.Name;
                    item3.DataContext = file;
                    lbFile.Items.Add(item3);
                }
            }
        }
    }
}

程序的运行效果如图示。

WindowsPhone8,开发,获取,手机,存储卡,数据,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部