Directory.getFiles排除0 kb文件

本文关键字:kb 文件 排除 getFiles Directory | 更新日期: 2023-09-27 18:02:15

当我的应用程序运行代码Directory.GetFiles ()时,我需要排除磁盘上大小为0kb的文件,该应用程序使用Windows Server资源管理器文件,并每5分钟启动一次以扫描特定文件夹中的文件并评估文件文件夹的内容,但有时,当任务处于活动状态时,用户会短时间加载文件,当用户试图再次上传文件时,您会得到一个错误来更正它,必须重新启动IIS,因为锁定过程会处理该文件。

因此,我需要排除大小为0kb的文件,因为这些文件甚至不会被用户使用。

我正在使用C#

Directory.getFiles排除0 kb文件

从返回FileInfo实例枚举的DirectoryInfo实例中使用GetFiles方法。FileInfo类具有关于文件长度的信息。

DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/APP_DATA"));
foreach(FileInfo fi in di.GetFiles("*.*", SearchOption.TopDirectoryOnly))
{ 
    if(fi.Length != 0)
    {
     ... process the file 
     ... fi.Name
    }
}

我用这个函数解决了我的问题:

protected virtual bool IsFileLocked(FileInfo file)
    {
        FileStream stream = null;
        try
        {
            stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
        }
        catch (IOException)
        {
            return true;
        }
        finally
        {
            if (stream != null)
                stream.Close();
        }
        //file is not locked
        return false;
    }

如果由于用户仍在上传文件到服务器而导致文件被锁定,则为