从C#中的自循环方法返回数据

时间:2017-02-26 12:40:00

标签: c# windows-phone-8 windows-runtime windows-phone-8.1 windows-phone

我正在写一个 Windows Phone 8.1(winrt)应用。我必须从路径(字符串)获取 StorageFile 。 我正在进入子文件夹,直到我迭代地使用此方法获取文件。 (方法循环,​​直到找到storageFile)

但是如何返回这个storageFile? 它从第一次运行(循环)返回 null

 public static async Task<StorageFile> GetStorageFileAsync(StorageFolder currentFolder, string filePath)
        {
            StorageFile file = null;
            if (FileHelper.IfPathContainDirectory(filePath))
            {
                // Just get the folder.
                string subFolderName = Path.GetDirectoryName(filePath);

                bool isSubFolderExist = await FileHelper.IfFolderExistsAsync(currentFolder, subFolderName);

                StorageFolder subFolder=null;

                if (isSubFolderExist)
                { 
                    // Just get the folder.
                    subFolder =
                        await currentFolder.GetFolderAsync(subFolderName);
                }
                else
                {
                   return null;
                }

                string newFilePath = Path.GetFileName(filePath);

                if (!string.IsNullOrEmpty(newFilePath))
                {
                    //get file iteratively.
                    await GetStorageFileAsync(subFolder, newFilePath);
                }
                return file;
            }
            else
            {

                try
                {
                    file = await currentFolder.GetFileAsync(filePath);
                }
                catch(Exception fileExp)
                {

                }

                return file;
            }
        }

进入方法,检查路径字符串中是否存在子文件夹 并深入到该子文件夹,最后进入其他部分 条件和获取文件。它不会返回此文件,但会返回 第一次执行循环时,对象为null。

1 个答案:

答案 0 :(得分:2)

您忘了分配file变量:

await GetStorageFileAsync(subFolder, newFilePath);

应该是

file = await GetStorageFileAsync(subFolder, newFilePath);

没有尝试代码,但这是结果为null的明显原因。