Directory.getFiles排除0 kb文件

时间:2016-08-11 21:11:26

标签: c# file-io

当我的应用程序运行代码Directory.GetFiles ()时,我需要在磁盘上排除大小为0 kb的文件,此应用程序使用Windows Server资源管理器文件并每5分钟触发一次以扫描特定文件中的文件并评估文件夹的内容,但有时,当任务处于活动状态时由用户短暂加载文件,当用户再次尝试上传文件时出现错误以纠正它必须重新启动IIS,因为锁定进程文件

因此我需要排除大小为0 kb的文件,即使是用户也不会结束的文件。

我正在使用C#

2 个答案:

答案 0 :(得分:1)

使用返回枚举DirectoryInfo个实例的FileInfo实例的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
    }
}

答案 1 :(得分:0)

我解决了这个功能的问题:

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;
    }

如果文件被锁定,因为用户仍然将其上传到服务器