【问题标题】:Windows Phone 8.1 | How to determine if file exists in local folder?视窗电话 8.1 |如何确定文件是否存在于本地文件夹中?
【发布时间】:2015-02-13 03:38:51
【问题描述】:

如何判断文件是否存在于本地文件夹 (Windows.Storage.ApplicationData.Current.LocalFolder) 在 Windows Phone 8.1 上?

【问题讨论】:

    标签: file windows-phone-8.1


    【解决方案1】:

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

    • 获取一个文件,如果抛出异常则说明该文件不存在,
    • 列出所有文件并检查是否有一个具有搜索文件名的文件

    一个简单的扩展方法可以是这样的:

    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");
    

    如果文件不存在并且文件夹中的文件很少,则第二种方法可能会快一点,因此不会引发异常。

    【讨论】:

    • 据我所知,Romasz建议的第一种方法是最常用的。我会说它比第二个选项更好,因为它允许您检查子文件夹中的文件并且更加一致,尽管在某些情况下可能会更慢。
    猜你喜欢
    • 2013-07-04
    • 2011-02-12
    • 2011-08-03
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多