如何计算项目解决方案文件夹中的文件?

时间:2013-04-27 15:34:40

标签: c#-4.0 windows-phone-8 file-io storage

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

在普通的WPF应用程序中,我们可以编写类似

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

但Windows手机里面的解决方案我该怎么做?

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

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

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

1 个答案:

答案 0 :(得分: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;
    }
}