动态搜索项目文件夹中的文件

时间:2013-07-15 06:30:37

标签: c# windows-runtime windows-store-apps winrt-xaml

在我的Windows商店项目中,我的Assets文件夹中有一些.jpg文件。如何动态获取该文件夹中的所有.jpg文件?

我试过了:

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync("ms-appx:///Assets/");
var fileList = await folder.GetFilesAsync(CommonFileQuery.DefaultQuery);

必须以某种方式工作(使用不同的CommonFileQuery),但这对我不起作用。 (第1行的系统异常 - 错误的路径名称。)

第二个问题:如何测试我的Assets文件夹是否包含“movie.mp4”?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用Directory.EnumerateFiles(sourceDirectory,“* .jpg”,SearchOption.AllDirectories);

问题2:

您可以使用File.Exists(filePath);

修改 根据您的评论,我发现this使用GetFileFromApplicationUriAsync代替GetFolderFromPathAsync

StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
var files = installedLocation.GetFolderFromPathAsync("Assets");

Q2似乎可以使用

TryGetItemAsync

答案 1 :(得分:1)

这是我的方案的完整解决方案:

  1. 在特定文件类型的项目文件夹中获取文件。
  2. 检查项目文件夹中是否存在文件。
  3. 1:

    StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
    
    StorageFolder subFolder = await installedLocation.GetFolderAsync("Assets");
    subFolder = await subFolder.GetFolderAsync("Images");
    
    List<String> fileType = new List<String>();
    fileType.Add(".jpg");
    var queryOptions = new QueryOptions(CommonFileQuery.DefaultQuery, fileType);
    var query = subFolder.CreateFileQueryWithOptions(queryOptions);
    
    var fileList = await query.GetFilesAsync();
    

    2:

    try
    {
      var video = await subFolder.GetFileAsync("Video.mp4");
    }
    catch (FileNotFoundException)
    {
      Debug.WriteLine("No Video found");
    }