Beispiel #1
0
        /// <summary>
        /// Compares two files using binary or text comparison methods.
        /// </summary>
        /// <param name="fileA"></param>
        /// <param name="fileB"></param>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="args"></param>
        /// <param name="progress"></param>
        private DiffBinaryTextResults GetFileLines(IFileInfo fileA
                                                   , IFileInfo fileB
                                                   , TextBinaryDiffArgs args
                                                   , IDiffProgress progress)
        {
            // Nothing to compare if both files do not exist
            if (fileA.FileExists == false && fileB.FileExists == false)
            {
                return(new DiffBinaryTextResults(CompareType.Text, new FileContentInfo(), new FileContentInfo()));
            }

            if (args.CompareType == CompareType.Binary ||
                (args.IsAuto && fileA.Is == FileType.Binary || fileB.Is == FileType.Binary))
            {
                return(GetBinaryFileLines(fileA, fileB, args, progress));
            }

            FileContentInfo af = null, bf = null;

            if (fileA.FileExists)
            {
                af = AsyncPump.Run(() => FileEx.GetFileTextAsync(fileA.FullName));
            }
            else
            {
                af = new FileContentInfo();
            }

            if (fileB.FileExists)
            {
                bf = AsyncPump.Run(() => FileEx.GetFileTextAsync(fileB.FullName));
            }
            else
            {
                bf = new FileContentInfo();
            }

            return(new DiffBinaryTextResults(CompareType.Text, af, bf));
        }