Windows Phone 8.1 | 如何确定本地文件夹中是否存在文件?

4
如何确定本地文件夹中是否存在文件(Windows.Storage.ApplicationData.Current.LocalFolder)在Windows Phone 8.1上?
1个回答

11

很遗憾,目前没有直接的方法可以检查文件是否存在。您可以尝试使用以下两种方法之一:

  • 获取文件,如果抛出异常,则表示文件不存在,
  • 列出所有文件并检查是否有与搜索到的文件名相同的文件

一个简单的扩展方法可能看起来像这样:

public static class FileExtensions
{
    public static async Task<bool> FileExists(this StorageFolder folder, string fileName)
    {
        try { StorageFile file = await folder.GetFileAsync(fileName); }
        catch { return false; }
        return true;
    }

    public static async Task<bool> FileExist2(this StorageFolder folder, string fileName)
    { return (await folder.GetFilesAsync()).Any(x => x.Name.Equals(fileName)); }
}

然后您可以像这样使用它们:

bool isFile = await ApplicationData.Current.LocalFolder.FileExists("myfile.txt");

如果文件不存在且文件夹中的文件较少,第二种方法可能会更快,因此不会抛出异常。


1
据我所知,Romasz建议的第一种方法是最常用的。我认为它比第二个选项更好,因为它允许您检查子文件夹中的文件,并且更加一致,尽管在某些情况下可能会更慢。 - yasen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接