private string DetermineTargetFileName( string fileNameFormat, ref int counter, string directory) { string filePath; for (filePath = DirectorySorter.CreateFilePath(fileNameFormat, counter, directory); this.systemContext.FileExists(filePath); filePath = DirectorySorter.CreateFilePath(fileNameFormat, counter, directory)) { ++counter; } return(filePath); }
public void SortDirectory(string directory, string fileNamePattern) { if (string.IsNullOrWhiteSpace(directory)) { throw new ArgumentException(Resources.Error_InvalidInputDirectory, nameof(directory)); } this.OnMessageSent(new MessageSentEventArgs(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Resources.Info_SortingDirectory, (object)directory), MessageType.Information)); fileNamePattern = fileNamePattern == null ? string.Empty : fileNamePattern.Trim(); IOrderedEnumerable <string> source1 = this.systemContext.GetFiles(directory, "*.jpg", SearchOption.TopDirectoryOnly).OrderBy <string, DateTime>((Func <string, DateTime>)(file => this.systemContext.GetFileCreationTime(file))); int num1 = source1.Count <string>(); string fileNameFormat = DirectorySorter.ResolveFileNameFormat(fileNamePattern, num1, ".jpg"); string firstImage = (string)null; int counter = 1; int num2 = 0; int errors = 0; foreach (string source2 in (IEnumerable <string>)source1) { try { string targetFileName = this.DetermineTargetFileName(fileNameFormat, ref counter, directory); this.OnMessageSent(new MessageSentEventArgs(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Resources.Info_MovingFile, (object)source2, (object)targetFileName), MessageType.Verbose)); this.systemContext.MoveFile(source2, targetFileName); if (num2 == 0) { firstImage = targetFileName; } } catch (Exception ex) { this.OnMessageSent(new MessageSentEventArgs(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Resources.Warning_FailedToProcessFile, (object)source2, (object)ex.Message), MessageType.Warning)); ++errors; } this.OnProgressChanged(new ProgressChangedEventArgs(MessagingBase.CalculatePercentage(++num2, num1), 0)); ++counter; } this.OnProgressChanged(new ProgressChangedEventArgs(100, 100)); this.OnCompleted(new CompletedEventArgs(DirectorySorter.PrepareSummary(num1, counter, errors), directory, firstImage)); }