【UWP】不通过异常判断文件是否存在

从WP升到WinRT(Win8/WP8.1/UWP)后所有的文件操作都变成StorageFile和StorageFolder的方式,但是微软并没有提供判断文件是否存在的方法通常的做法我们可以通过下面方式判断文件是否存在

1、通过FileNotFoundException异常判断

public async Task<bool> isFilePresent(string fileName)
{
    bool fileExists = true;
    Stream fileStream = null;
    StorageFile file = null;

    try
    {
        file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
        fileStream = await file.OpenStreamForReadAsync();
        fileStream.Dispose();
    }
    catch (FileNotFoundException)
    {
        // If the file dosn‘t exits it throws an exception, make fileExists false in this case
        fileExists = false;
    }
    finally
    {
        if (fileStream != null)
        {
            fileStream.Dispose();
        }
    }

    return fileExists;
}

  由于异常的抛出对性能的开销非常大,我们也可以通过遍历文件名的方式判断文件是否存在

2、通过遍历文件

public async Task<bool> isFilePresent(string fileName)
{
    bool fileExists = false;
    var allfiles = await ApplicationData.Current.LocalFolder.GetFilesAsync();
    foreach (var storageFile in allfiles)
    {
        if (storageFile.Name == fileName)
        {
            fileExists = true;
        }
    }
    return fileExists;
}

  遍历显然是一种取巧的方式,如果文件多的画可能会影响性能

3、通过TryGetItemAsync方法获取(Win8/WP8.1不支持)

public async Task<bool> isFilePresent(string fileName)
{
    var item = await ApplicationData.Current.LocalFolder.TryGetItemAsync(fileName);
    return item != null;
}

推荐使用第三种方式更快一些,第一种最慢,第二种其次,上面三种方式的性能还没测试过,有空测试一下

引用:http://blogs.msdn.com/b/shashankyerramilli/archive/2014/02/17/check-if-a-file-exists-in-windows-phone-8-and-winrt-without-exception.aspx

时间: 2024-11-17 01:19:45

【UWP】不通过异常判断文件是否存在的相关文章

UWP开发细节记录:判断文件类型

StorageFile.ContentType 属性,是 string 类型,用来表示文件内容的 MIME 类型.例如,音乐文件可能有 "audio/mpeg" MIME 类型.(MSDN) MIME 类型的定义可以下面的链接找到: MIME Types - http://blogs.msdn.com/b/jaimer/archive/2008/01/04/mime-types.aspx MIME 参考手册 - http://www.w3school.com.cn/media/medi

Python中如何判断文件是否存在?

通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 本文为大家介绍三种判断文件或文件夹是否存在的方法,分别使用 os模块 . Try语句 . pathlib模块 ,一起来看看吧,希望对大家学习python有所帮助. 1.使用os模块 os模块中的 os.path.exists() 方法用于检验文件是否存在. · 判断文件是否存在 import osos.path.exists(test_file.txt)#True o

Delphi判断文件是否正在被使用

首先,我们先来认识下CreateFile函数,它的原型如下 HANDLE CreateFile( LPCTSTR lpFileName,    //指向文件名的指针 DWORD dwDesiredAccess,   //访问模式(写/读) DWORD dwShareMode,   //共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes,//指向安全属性的指针 DWORD dwCreationDisposition,   //如何创建 DWORD dwF

Python 判断文件是否存在的三种方法

通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在. 判断文件是否存在 import os #如果存在返回True >>>os.path.exists('test_file.txt') >>>True #如果不

Python判断文件是否存在的三种方法【转】

转:http://www.cnblogs.com/jhao/p/7243043.html 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在. 判断文件是否存在 import os os.path.exists(test_file.tx

Python判断文件是否存在的三种方法

目录 1.使用os模块 判断文件是否可做读写操作 2.使用Try语句 3. 使用pathlib模块 正文 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在. 判断文件是否存在 import os os.path.exists(test

UNIX环境编程学习笔记(6)——文件I/O之判断文件类型

lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: (1) 普通文件(regular file) 这种文件包含了某种形式的数据,这些数据无论是文件还是二进制对于 UNIX 内核而言都是一样的.对普通文件内容的解释有处理该文件的应用程序进行. (2) 目录文件(directory file) 目录文件包含了其他文件的名字以及指向与这些文件有关信息的指

JAVA判断文件的内容类型

Java 7 新的特性,判断文件的内容类型. Program to demonstrate Java 7 new feature : Determining the file content type. package com.hubberspot.nio; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public cl

shell 判断文件、目录是否存在

shell判断文件是否存在 1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var /log/httpd/access.log" 6. 7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 8. if [ ! -x "$myPath"]; then 9. mkdir "$myPath" 10