2

我想问一下,是否有人知道从SD卡文件夹中获取所有文件名及其绝对路径并将它们放入列表的好方法???我正在为 Windows Phone 8 编程。

示例输出:

String[] listOfItems = { "SdcardRoot/Music/a.mp3", 
                         "SdcardRoot/Music/ACDC/b.mp3", 
                         "SdcardRoot/Music/someartist/somealbum/somefile.someextention" };

感谢您的时间。

4

1 回答 1

1

这是实现您想要的分步指南。如果还有什么不清楚的地方,你也可以从 msdn获得这个。

你肯定会得到这样的代码:

    private async Task ListSDCardFileContents()
    {
        List<string> listOfItems = new List<string>();

        // List the first /default SD Card whih is on the device. Since we know Windows Phone devices only support one SD card, this should get us the SD card on the phone.
        ExternalStorageDevice sdCard = (await ExternalStorage.GetExternalStorageDevicesAsync()).FirstOrDefault();
        if (sdCard != null)
        {
            // Get the root folder on the SD card.
            ExternalStorageFolder sdrootFolder = sdCard.RootFolder;
            if (sdrootFolder != null)
            {
                // List all the files on the root folder.
                var files = await sdrootFolder.GetFilesAsync();
                if (files != null)
                {
                    foreach (ExternalStorageFile file in files)
                    {
                        listOfItems.Add(file.Path);
                    }
                }
            }
            else
            {
                MessageBox.Show("Failed to get root folder on SD card");
            }
        }
        else
        {
            MessageBox.Show("SD Card not found on device");
        }
    }

file位于files循环内的变量是ExternalStorageFile类型。该Path物业似乎是您需要的:

此路径相对于 SD 卡的根文件夹。

最后,不要忘记在应用程序的 WMAppManifest.xml 中添加ID_CAP_REMOVABLE_STORAGE 功能并注册文件关联

我们需要声明向应用程序注册某个文件扩展名的附加功能。为了确保我们可以读取某种类型的文件,我们需要在 Application Manifest 文件中通过扩展名注册文件关联。为此,我们需要以代码形式打开 WMAppManifest.xml 文件并进行以下更改。

于 2013-10-26T23:43:06.917 回答