我正在写一个 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。
答案 0 :(得分:2)
您忘了分配file
变量:
await GetStorageFileAsync(subFolder, newFilePath);
应该是
file = await GetStorageFileAsync(subFolder, newFilePath);
没有尝试代码,但这是结果为null
的明显原因。