Whitelog.Core.File.FileStreamProvider.ArchiveFile C# (CSharp) Method

ArchiveFile() private static method

private static ArchiveFile ( FileConfiguration configuration, string filePath ) : void
configuration FileConfiguration
filePath string
return void
        private static void ArchiveFile(FileConfiguration configuration, string filePath)
        {
            string archiveFilePath = GetArchiveFileName(configuration, filePath);

            if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(archiveFilePath))))
            {
                System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(archiveFilePath)));
            }

            if (configuration.ArchiveNumbering == ArchiveNumberingOptions.Sequence)
            {
                var filesMatchDescription = System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(archiveFilePath)),
                    System.IO.Path.GetFileNameWithoutExtension(archiveFilePath) + ".*" + System.IO.Path.GetExtension(archiveFilePath));

                int maxIndexFound = 0;
                foreach (var currFile in filesMatchDescription)
                {
                    var start = System.IO.Path.GetFileNameWithoutExtension(archiveFilePath).Length + 1;
                    var legnth = System.IO.Path.GetFileName(currFile).Length - start - System.IO.Path.GetExtension(archiveFilePath).Length;

                    var sequenceString = System.IO.Path.GetFileName(currFile).Substring(System.IO.Path.GetFileNameWithoutExtension(archiveFilePath).Length + 1, legnth);
                    int sequenceNumber;
                    if (int.TryParse(sequenceString, out sequenceNumber))
                    {
                        if (sequenceNumber > maxIndexFound)
                        {
                            maxIndexFound = sequenceNumber;
                        }
                    }
                }

                // The file now archived.
                System.IO.File.Move(filePath, System.IO.Path.Combine(System.IO.Path.GetDirectoryName(archiveFilePath), System.IO.Path.GetFileNameWithoutExtension(archiveFilePath)) + "." + (maxIndexFound + 1) + System.IO.Path.GetExtension(archiveFilePath));
            }
        }