示例#1
0
        public bool Equal(FileInfoEx fileB, FileCompareFlags flags)
        {
            FileCompareFlags equalFlags = (this.FileName == fileB.FileName) ? FileCompareFlags.UnrootedName : 0;

            equalFlags |= this.FileInfoObj.EqualityFlags(fileB.FileInfoObj, flags);
            return(equalFlags == flags);
        }
示例#2
0
        //--------------------------------------------------------------------------------
        public static FileCompareFlags EqualityFlags(this FileInfo fileA, FileInfo fileB, FileCompareFlags flags)
        {
            FileCompareFlags equalFlags = FileCompareFlags.All;

            equalFlags |= (FlagIsSet(flags, FileCompareFlags.Attributes) && fileA.Attributes == fileB.Attributes)        ? FileCompareFlags.Attributes    : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.Created) && fileA.CreationTime == fileB.CreationTime)      ? FileCompareFlags.Created       : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.CreatedUTC) && fileA.CreationTimeUtc == fileB.CreationTimeUtc)   ? FileCompareFlags.CreatedUTC    : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.Extension) && fileA.Extension == fileB.Extension)         ? FileCompareFlags.Extension     : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.LastAccess) && fileA.LastAccessTime == fileB.LastAccessTime)    ? FileCompareFlags.LastAccess    : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.LastAccessUTC) && fileA.LastAccessTimeUtc == fileB.LastAccessTimeUtc) ? FileCompareFlags.LastAccessUTC : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.LastWrite) && fileA.LastWriteTime == fileB.LastWriteTime)     ? FileCompareFlags.LastWrite     : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.LastWriteUTC) && fileA.LastWriteTimeUtc == fileB.LastWriteTimeUtc)  ? FileCompareFlags.LastWriteUTC  : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.Length) && fileA.Length == fileB.Length)            ? FileCompareFlags.Length        : 0;
            equalFlags |= (FlagIsSet(flags, FileCompareFlags.FullName) && fileA.FullName == fileB.FullName)          ? FileCompareFlags.FullName      : 0;
            return(equalFlags);
        }
示例#3
0
        //--------------------------------------------------------------------------------
        /// <summary>
        /// Determines if the specified file is "equal" to this file, bsased on the
        /// specified comparison properties
        /// </summary>
        /// <param name="fileB">The file to be compared</param>
        /// <param name="flags">The properties to be compared for equality</param>
        /// <returns></returns>
        public bool Equal(FileInfoEx fileB, FileCompareFlags flags)
        {
            // assume no matches
            FileCompareFlags equalFlags = 0;

            // first, we compare the unrooted name (the filename without the
            // root from/to path)
            if ((flags & FileCompareFlags.UnrootedName) == FileCompareFlags.UnrootedName)
            {
                equalFlags = (this.FileName == fileB.FileName) ? FileCompareFlags.UnrootedName : 0;
            }
            // and then we compare the actual FileInfo properties
            equalFlags |= this.FileInfoObj.EqualityFlags(fileB.FileInfoObj, flags);
            // if the flags that are set here are equal to the flags specified, this
            // method will return true
            return(equalFlags == flags);
        }
示例#4
0
        public bool NewOrChanged(FileInfoEx newFile)
        {
            var newCount = (from oldFile in this
                            where oldFile.FileName == newFile.FileName
                            select oldFile).Count();
            bool             isNew = (newCount == 0);
            FileCompareFlags flags = FileCompareFlags.UnrootedName |
                                     FileCompareFlags.LastWrite |
                                     FileCompareFlags.Length;
            var oldCount = (from oldFile in this
                            //where ((oldFile.FileName == newFile.FileName) && (oldFile.FileInfoObj.LastWriteTime != newFile.FileInfoObj.LastWriteTime || oldFile.FileInfoObj.Length != newFile.FileInfoObj.Length))
                            where oldFile.Equal(newFile, flags)
                            select oldFile).Count();
            bool isChanged = (oldCount > 0);

            return(isNew || isChanged);
        }
示例#5
0
        //--------------------------------------------------------------------------------
        public static bool Equal(this FileInfo fileA, FileInfo fileB, FileCompareFlags flags)
        {
            bool isEqual = (fileA.EqualityFlags(fileB, flags) == flags);

            return(isEqual);
        }
示例#6
0
        //////////////////////////////////////////////////////////////////////////////////
        // FileInfo methods

        //--------------------------------------------------------------------------------
        private static bool FlagIsSet(FileCompareFlags flags, FileCompareFlags flag)
        {
            bool isSet = ((flags & flag) == flag);

            return(isSet);
        }