3

我想开发一个基于 windows phone 的应用程序,我需要将文件夹中的文件数量(该文件夹已经是项目的一部分)放到一个列表中,以便在运行时我可以访问这些文件。如果有人可以告诉我如何做到这一点,那将是很大的帮助。

在普通的 WPF 应用程序中,我们可以编写如下代码

DirectoryInfo di = new DirectoryInfo("D:\\Tempo");
FileInfo[] fi = di.GetFiles("*", SearchOption.AllDirectories);
MessageBox.Show(fi.Length.ToString());

但是Windows phone里面的解决方案我该怎么做呢?

我可以通过此代码访问单个文件

if (Application.GetResourceStream(new Uri("/WindowsPhone;component/Folder/file09.jpg", UriKind.Relative)) != null)
{
    MessageBox.Show("Hi");
} 

但是在那个文件夹里面有很多文件,我想把它们放到列表中,这样在运行时我可以访问这些图像。但用户不会知道这一点,所以它应该是 C# 代码,而不是 XAML 代码。任何帮助都会很棒。

4

1 回答 1

1

这很容易。

确保将特定文件夹添加到解决方案。以及您想要在该文件夹中的任何文件。

确保每个文件的属性设置如下:

构建操作:内容
复制到输出目录:不要复制


在调用之前确保应用程序已加载

假设我有一个名为“Testfiles”的文件夹,然后我想从中读取:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    ReadAllFilesFromFolder("Testfiles");
}

// TODO: recursion to get subfolders and files (maybe?)
public async void ReadAllFilesFromFolder(string folder_name)
{
    var package = Windows.ApplicationModel.Package.Current.InstalledLocation;
    var assetsFolder = await package.GetFolderAsync(folder_name);
    foreach (var file in await assetsFolder.GetFilesAsync())
    {
        // TODO: whatever you want to do with file
        // string filename = file.Name;
    }
}
于 2014-09-06T03:12:33.060 回答